工程化项目之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

posted @ 2020-04-12 20:20  和平的home  阅读(239)  评论(0编辑  收藏  举报