常见的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
  )
);
相关推荐
徐小夕18 分钟前
花了3天,我写了一款开源AI公众号编辑器
前端·vue.js·github
PBitW27 分钟前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
Hilaku35 分钟前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
PBitW1 小时前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
名字还没想好☜1 小时前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate
come112341 小时前
Vue 2 与 Vue 3 语法区别及使用技巧
前端·javascript·vue.js
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:ERP 企业资源模块,一个轻量级进销存的完整实现?
前端·javascript·vue.js·人工智能·前端框架·产品经理·ai编程
虹科网络安全1 小时前
艾体宝新闻|从 SQL 注入到服务器接管:CVE-2026-57517 暴露 Web 管理面板的供应链与安全编码风险
服务器·前端·sql
糖果店的幽灵2 小时前
langgraph的四种state解析
java·前端·javascript·langgraph
顺颂时绥_12 小时前
前端大图片压缩与安卓/苹果设备矫正实践
前端