常见的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
  )
);
相关推荐
m0_748235611 分钟前
从零开始学前端之HTML(三)
前端·html
一个处女座的程序猿O(∩_∩)O2 小时前
小型 Vue 项目,该不该用 Pinia 、Vuex呢?
前端·javascript·vue.js
hackeroink5 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss
迷雾漫步者7 小时前
Flutter组件————FloatingActionButton
前端·flutter·dart
向前看-7 小时前
验证码机制
前端·后端
燃先生._.8 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js
高山我梦口香糖9 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
m0_748235249 小时前
前端实现获取后端返回的文件流并下载
前端·状态模式
m0_7482402510 小时前
前端如何检测用户登录状态是否过期
前端