zoukankan      html  css  js  c++  java
  • 工程化项目之gulp

    1、nodejs的安装:
    注:安装nodejs前需要Python解释器,推荐2.7版本!
    测试安装成功否:
     
    打开cmd `node -v`  
     
    模块化
    - 核心 : 
        - 1. 引入
          - require(路径)
        - 2. 定义
          - module.exports = {}
     
     
    依赖管理工具 npm
     1. 制造一个依赖配置详情(使用说明书) 
    2. 根据依赖说明书自动进行配置;
    3. 安装第三方插件; web 第三方插件可以用cdn引入, nodejs都会把第三方依赖下载到本地;
     4. 卸载第三方插件;
     
    区分安装环境 : 
    - 1. 局部安装(在当前文件夹下可用)
    - 2. 全局安装(在任意位置可用)
     
     1. 下载 局部gulp的安装 : `npm install gulp --save-dev`
            - 观察文件之中多出了啥 => node_modules 
            - 观察package.json里面多出了啥 => 开发环境依赖项 devDependencies 
        2. 下载 局部gulp-cli的安装 : `npm install gulp-cli -g`
        
        3. 使用gulp指令; 测试gulp是否可用;
     
           `gulp -v`
     
           成功的结果应该显示 : 
     
    > CLI version: 2.2.0
    > Local version: 4.0.2
     
    基本配置
    1. 在项目根目录之中建立一个gulpfile.js, 用来配置gulp所有的行为;
     
     
    使用:
        1. task 指令 -> 给gulp绑定一个指令,让gulp可以识别指令并替我们完成工作
        2. src  找到源文件的指令 => 返回一个gulp的流;
        3. pipe 处理gulp文档流的api;
        4. dest 转存, 和 pipe 配合使用。 
     
    `gulp.task( "指令名" , ()=>{ 指令行为 })`
     
     
    其他工具:
    gulp-babel
     
    del 删除工具
     
    gulp-connect 服务器环境
     
    gulp-cssnano css压缩工具
     
    gulp-minify-html HTML压缩工具
     
    gulp-rev 实时刷新工具
     
    gulp-sass 支持scss
     
    gulp-uglify
     
    http-proxy-middleware
     
     
    package.json的配置如下:
    {
      "name""projectss",
      "version""1.0.0",
      "description""",
      "main""index.js",
      "scripts": {
        "test""echo "Error: no test specified" && exit 1"
      },
      "keywords": [],
      "author""",
      "license""ISC",
      "devDependencies": {
        "@babel/core""^7.9.0",
        "@babel/preset-env""^7.9.5",
        "del""^5.1.0",
        "gulp-babel""^8.0.0",
        "gulp-connect""^5.7.0",
        "gulp-cssnano""^2.1.3",
        "gulp-minify-html""^1.0.6",
        "gulp-rev""^9.0.0",
        "gulp-rev-collector""^1.3.1",
        "gulp-sass""^4.0.2",
        "gulp-sass-china""^3.1.0",
        "gulp-sourcemaps""^2.6.5",
        "gulp-uglify""^3.0.2",
        "http-proxy-middleware""^1.0.3",
        "node-sass""^4.13.1"
      },
      "dependencies": {
        "gulp""^4.0.2",
        "gulp-file-include""^2.1.1"
      }
    }
     
     
    构建启动指令:
    var mode = process.argv[2]; 
    switchmode ){
        case "dev" : 
            require("./gulpfile.dev.js");
            break;
        case "build":
            require("./gulpfile.build.js");
    }
     
     
    开发环境:
     
    let gulp        = require("gulp");
    let connect     = require("gulp-connect");
    let proxy       = require("http-proxy-middleware").createProxyMiddleware;
    let fileinclude = require("gulp-file-include");
    let sass        = require('gulp-sass');
    sass.compiler   = require('node-sass');
    let del         = require("del");
    let connect_options = {
        root : "./dist",
        port : 3000,
        livereload : true,
        middleware : function(){
            return [ 
                proxy"/pxx" ,  {
                    target : "https://apiv2.pinduoduo.com/api/gindex/subject/limited/goods",
                    changeOrigin : true,
                    pathRewrite : {
                          "/pxx": ""
                    }
                }),
                proxy("/dt", {
                    target :"https://www.duitang.com/napi/blog/list/by_filter_id/",
                    changeOrigin : true,
                    pathRewrite : {
                        "/dt": ""
                    }
                }),
                proxy("/lg", {
                    target :"http://localhost/server/login-normal.php",
                    changeOrigin : true,
                    pathRewrite : {
                        "/lg": ""
                    }
                })
            ]
        }
    }
     
    gulp.task("dele"async()=>{
        await del(['./dist/**/*']);
    })
    gulp.task('connect' , async ()=> {
        connect.server(connect_options);
    });
     
     
    gulp.task("html" , async ()=>{
        gulp.src(["./src/html/**/*.html","!./src/html/**/header.html"]) 
        .pipe(fileinclude({
            prefix: '@@',
            basepath: '@file'
        }))
        .pipe(gulp.dest("./dist/")) 
        .pipe(connect.reload())
    });
     
    gulp.task("javascript" , async()=>{
        gulp.src(["./src/javascripts/**/*.js"])
        .pipe(gulp.dest("./dist/javascripts"))
        .pipe(connect.reload())
     
    });
    gulp.task("css" , async()=>{
        gulp.src(["./src/stylesheets/*.css"])
        .pipe(gulp.dest("./dist/stylesheets"))
        .pipe(connect.reload())
    });
     
    gulp.task("scss" , async ()=>{
        gulp.src(["./src/scss/*.scss"])
        .pipe(sass().on('error'sass.logError))
        .pipe(gulp.dest("./dist/stylesheets/"))
        .pipe(connect.reload())
    })
     
    gulp.task("watch",async ()=>{
        gulp.watch(["./src/html/**/*.html"] , gulp.series("html"));
        gulp.watch(["./src/javascripts/*.js"] , gulp.series("javascript"));
        gulp.watch(["./src/stylesheets/*.css"] , gulp.series("css"));
        gulp.watch(["./src/scss/**/*.scss"] , gulp.series("scss"));
    })
     
    gulp.task("dev"gulp.parallel("watch""connect" ,gulp.series("dele","html","javascript","css""scss")));
     
     
     
    生产环境:
    let gulp         = require("gulp");
    let babel        = require('gulp-babel');
    let del          = require("del");
    let uglify       = require("gulp-uglify");
    let cssnano      = require("gulp-cssnano");
    let sourcemaps   = require('gulp-sourcemaps');
    let rev          = require("gulp-rev");
    let revCollector = require('gulp-rev-collector');
    let minifyHtml   = require('gulp-minify-html');
    let fileinclude  = require("gulp-file-include");
    let sass         = require('gulp-sass');
    sass.compiler    = require('node-sass');
     
    gulp.task("dele"async()=>{
        await del(['./dist/**/*']);
    })
    gulp.task("js" , async()=>{
        gulp.src(["./src/javascripts/**/*.js"])
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(rev())
        .pipe(sourcemaps.write("."))
        .pipe(gulp.dest("./dist/javascripts"))
        .pipe(rev.manifest())
        .pipe(gulp.dest'rev/js' ) );
    })
    gulp.task("css" , async()=>{
        gulp.src(["./src/stylesheets/*.css"])
        .pipe(sourcemaps.init())
        .pipe(cssnano())
        .pipe(rev())
        .pipe(sourcemaps.write("."))
        .pipe(gulp.dest("./dist/stylesheets/"))
        .pipe(rev.manifest())
        .pipegulp.dest'rev/css' ) );
    })
    gulp.task("html" , async()=>{
        gulp.src(["rev/**/*.json","./src/html/**/*.html"])
        .pipe(fileinclude({
            prefix: '@@',
            basepath: '@file'
        }))
        .pipe(revCollector({
            replaceReved: true,
        }))
        .pipe(minifyHtml())
        .pipe(gulp.dest("./dist/"))
    })
    gulp.task("scss" , async ()=>{
        gulp.src(["./src/scss/*.scss"])
        .pipe(sass().on('error'sass.logError))
        .pipe(sourcemaps.init())
        .pipe(cssnano())
        .pipe(rev())
        .pipe(sourcemaps.write("."))
        .pipe(gulp.dest("./dist/stylesheets/"))
        .pipe(rev.manifest())
        .pipegulp.dest'rev/css' ) );
    })
     
     
    gulp.task("build"gulp.series("dele","js","css","html","scss"));
     
     
     
     

    工程化项目之gulp

  • 相关阅读:
    怎样创建动态扩容数组?
    怎样终止一个线程?
    模式识别
    基于Linux根据僵尸网络病毒平台《比尔盖茨》
    web.xml在<init-param>一个错误
    DTD学习笔记
    Java排序算法(四):Shell排序
    VC6迁移到VS2008几个问题——良好的代码,从我做起,从现在开始。
    Maven 建 Struts2 基本实现 CURD Controller
    Andy's First Dictionary
  • 原文地址:https://www.cnblogs.com/homeathere/p/12687347.html
Copyright © 2011-2022 走看看