常见的gulp操作

cmd 复制代码
npm install gulp --save-dev
npm install gulp --g

多环境区分

cmd 复制代码
npm install cross-env --save-dev

我们可以使用自定义参数来区分多种环境。如以下代码所示,使用自定义参数NODE_ENV SERVICE_ENV 可以实现dev dev:stage build build:stage四种环境的配置。

json 复制代码
{
    "scripts": {
        "dev": "cross-env NODE_ENV=development SERVICE_ENV=beta gulp",
        "dev:stage": "cross-env NODE_ENV=development SERVICE_ENV=stage gulp",
        "build": "cross-env NODE_ENV=production SERVICE_ENV=beta gulp build",
        "build:stage": "cross-env NODE_ENV=production SERVICE_ENV=stage gulp build"
    },
}

清空文件夹

cmd 复制代码
npm install del --save-dev

gulpfile.js 中配置:

javascript 复制代码
const del = require("del");
function cleanWorks() {
  return del([`del path`]);
}

合并和压缩css

cmd 复制代码
npm install gulp-concat gulp-sass gulp-clean-css --save-dev

gulpfile.js 中配置:

javascript 复制代码
const concat = require("gulp-concat");
const sass = require("gulp-sass")(require("node-sass"));
const cleanCSS = require("gulp-clean-css");
function minifycss() {
  return gulp
    .src("src/sass/*.scss")
    .pipe(sass().on("error", sass.logError))
    .pipe(concat("index.min.css"))
    .pipe(cleanCSS())
    .pipe(gulp.dest("output path"));
}

合并和压缩js

cmd 复制代码
npm install gulp-concat gulp-uglify --save-dev

gulpfile.js 中配置:

javascript 复制代码
const concat = require("gulp-concat");
const uglify = require("gulp-uglify");
function minifyjs() {
  return gulp
    .src(["src/js/*.js"])
    .pipe(concat("index.min.js"))
    .pipe(uglify())
    .pipe(gulp.dest(prefix));
}

压缩html

cmd 复制代码
npm install gulp-htmlmin --save-dev

gulpfile.js 中配置:

javascript 复制代码
const htmlmin = require("gulp-htmlmin");
function minifyHtml() {
  return gulp
    .src("src/html/*.html")
    .pipe(
      htmlmin({
        collapseWhitespace: true,
      })
    )
    .pipe(gulp.dest(prefix));
}

给html自定义注入js/css的地址

cmd 复制代码
npm install gulp-htmlmin --save-dev

gulpfile.js 中配置:

javascript 复制代码
const htmlmin = require("gulp-htmlmin");
function injectHtml() {
  return gulp
    .src(`out path/*.html`)
    .pipe(
      inject(
        gulp.src([`out path/index.min.js`, `out path/index.min.css`], {
          read: false,
        }),
        { relative: true, addPrefix: "custom prefix" }
      )
    )
    .pipe(gulp.dest(`out path`));
}

复制图片

gulpfile.js 中配置:

javascript 复制代码
function copyImg() {
  return gulp.src(["src/images/*.*"]).pipe(gulp.dest(`out path/images`));
}

监听文件变化

gulpfile.js 中配置:

javascript 复制代码
function watchFiles() {
  watch("src/sass/*.scss", series(cleanCss, minifycss));
  watch("src/js/**/*.js", series(cleanJs, minifyjs));
}

启动静态服务器

gulpfile.js 中配置, 启动之后可以在http://localhost:3003 进行访问

javascript 复制代码
const createServer = () => {
  return gulp.src(`./out path`).pipe(
    webserver({
      //创建服务器
      port: "3003", //端口号
      open: "/path.html", //默认打开路径
      livereload: true, //热更新
    })
  );
};

组合执行任务

gulpfile.js 中配置:

javascript 复制代码
// 生产环境
gulp.task(
  "build",
  series(
    cleanWorks,
    series(parallel(minifycss, minifyjs, minifyHtml), injectHtml),
    copyImg
  )
);
// 开发环境
gulp.task(
  "default",
  series(
    cleanWorks,
    series(parallel(minifycss, minifyjs, minifyHtml), injectHtml),
    copyImg,
    createServer,
    watchFiles
  )
);
相关推荐
imLix21 分钟前
RunLoop 实现原理
前端·ios
wayman_he_何大民27 分钟前
初始机器学习算法 - 关联分析
前端·人工智能
飞飞飞仔30 分钟前
别再瞎写提示词了!这份Claude Code优化指南让你效率提升10倍
前端·claude
刘永胜是我31 分钟前
node版本切换
前端·node.js
成小白35 分钟前
前端实现表格下拉框筛选和表头回显和删除
前端
wayman_he_何大民36 分钟前
初始机器学习算法 - 聚类分析
前端·人工智能
wycode37 分钟前
Vue2实践(3)之用component做一个动态表单(二)
前端·javascript·vue.js
用户1092257156101 小时前
你以为的 Tailwind 并不高效,看看这些使用误区
前端
意会1 小时前
微信闪照小程序实现
前端·css·微信小程序
onejason1 小时前
《利用 Python 爬虫获取 Amazon 商品详情实战指南》
前端·后端·python