📒
notebook
  • Notebook
  • DevOps
    • Git
      • 常见 Git 操作
      • 使用 SSH 连接 Git 远程仓库
      • 使用 GPG Keys 签名 Git 提交
      • Git on macOS
    • Docker
      • macOS 安装配置 Docker
      • CentOS7 安装配置 Docker CE
  • Linux
    • CentOS
      • CentOS7 安装配置 vsftpd
      • CentOS7 设置虚拟内存
      • CentOS7 使用 acme.sh 自动申请免费 SSL 证书
      • CentOS7 修改 SSH 端口号
      • CentOS7 主机初始设置
      • 阿里云 CentOS 主机常见设置
      • CentOS7 安装配置 SS
    • nginx
      • nginx 配置 301 永久重定向
      • nginx 使用 SSL证书配置 HTTPS
      • CentOS7 安装配置 nginx
      • nginx 配置 gzip 压缩
      • nginx 代理静态网页
  • Server
    • Ghost
      • macOS 安装配置 Ghost
      • CentOS7 安装配置 Ghost
    • npm & Yarn
      • Yarn 常用命令
      • CentOS7 安装卸载升级 Yarn
      • npm & Yarn 常见错误处理
      • macOS 安装卸载升级 Yarn
    • Node.js
      • Awesome Node.js
      • CentOS7 安装卸载升级 Node.js
      • macOS 安装卸载升级 Node.js
  • Web
    • Ionic
      • 创建 Ionic & Angular 项目
      • 使用 Ionic & Cordova 构建 Android 应用
      • macOS 搭建 Ionic & Cordova 开发环境
    • CSS
      • CSS 排版技巧
      • Awesome CSS
      • CSS 三栏自适应布局
    • Angular
      • Awesome Angular
      • 创建 Angular 项目
    • HTML
      • HTML head 常用标签
      • HTML 常用 DTD 声明
      • 常用网页语义结构
    • Web 技术标准
    • JavaScript
      • Awesome JavaScript
      • JavaScript 的 eval() 函数详解
  • Mobile
    • H5
      • iOS Safari Web App 配置
  • Development Environment
    • Development Utilities
      • Awesome Windows
      • macOS 安装配置 Homebrew
      • Awesome macOS
      • macOS 安装配置 iTerm2
    • FEED
      • 常用 Gulp 插件
  • Network
    • 常见公共 DNS
  • Technology Stacks for Web Front-End Development
Powered by GitBook
On this page
  • HTML 文件处理
  • gulp-htmlmin
  • gulp-processhtml
  • CSS 文件处理
  • autoprefixer
  • postcss-url
  • cssNano
  • JS 文件处理
  • gulp-uglify
  • 通用文件处理
  • gulp-rev
  • gulp-rev-rewrite
  • gulp-zip

Was this helpful?

  1. Development Environment
  2. FEED

常用 Gulp 插件

PreviousFEEDNextNetwork

Last updated 4 years ago

Was this helpful?

HTML 文件处理

压缩处理 HTML 文件,详细参数参数见 。

安装:

yarn add gulp-htmlmin --dev

使用:

const { src, dest } = require('gulp');
const minifyHtml = require('gulp-htmlmin');

function minifyHtml() {
  const options = {
    collapseWhitespace: true, // 是否将 HTML 代码折叠成一行,默认 false
    removeComments: true // 是否删除注释,默认 false
  };
  return src('./*.html')
    .pipe(minifyHtml(options))
    .pipe(dest('./dist/'));
};

使用 HTML 注释标记替换文档内容,支持 .hbs/.jsp/.php 等模板文件 。

安装:

yarn add gulp-processhtml --dev

使用:

const { src, dest } = require('gulp');
const processHtml = require('gulp-processhtml');

function processHtml() {
  return src('./index.html')
    .pipe(processHtml())
    .pipe(dest('./dist/'));
}

需要处理的文档内容添加标记:

<!DOCTYPE html>
<html>
<head>
  <!-- build:css /css/bundle.css -->
  <link rel="stylesheet" href="/libraries/normalize/normalize.css">
  <link rel="stylesheet" href="/css/screen.css">
  <!-- /build -->
  <!-- build:js /js/bundle.js -->
  <script src="/libraries/jquery/jquery.js"></script>
  <script src="/js/index.js"></script>
  <!-- /build -->
</head>
<body>
  <!-- build:remove -->
  remove
  <!-- /build -->
  <!-- build:replace 'processhtml' -->
  PROCESSHTML
  <!-- /build -->
</body>
</html>

处理之后的文档内容:

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="/css/bundle.css">
  <script src="/js/bundle.js"></script>
</head>
<body>
  processhtml
</body>
</html>

CSS 文件处理

安装:

yarn add gulp-postcss autoprefixer --dev

使用:

const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const autoPreFixer = require('autoprefixer');

function processCss() {
  const postCssPlugins = [autoPreFixer()];
  return src('./assets/css/*.css', { base: './' })
    .pipe(postCSss(postCssPlugins))
    .pipe(dest('./dist/'));
}
# Browsers that we support
# https://github.com/browserslist/browserslist

last 2 version
> 1%
IE 11

安装:

yarn add gulp-postcss postcss-url --dev

自动修改引用文件路径:

/**
 * 处理前文件目录:
 *    ./assets/css/*.css
 *    ./assets/icons/icon.svg
 * 处理后文件目录:
 *    ./dist/assets/*.css
 *    ./dist/assets/icons/icon.svg
 * 处理前引用路径:background-image: url('../icons/icon.svg');
 * 处理后引用路径:background-image: url('icons/icon.svg');
 */
const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const postUrl = require('postcss-url');

function processCss() {
  const postUrlOptions = { url: 'rebase' };

  const postCssPlugins = [postUrl(postUrlOptions)];

  const postCssOptions = {
    from: './assets/css/*.css',
    to: './dist/assets/*.css'
  };

  return src('./assets/css/*.css', { base: './' })
    .pipe(postCSss(postCssPlugins, postCssOptions))
    .pipe(dest('./dist/'));
}

引用文件的文件名换成 Hash:

/**
 * 处理前文件目录:
 *    ./assets/css/*.css
 *    ./assets/icons/icon.svg
 * 处理后文件目录:
 *    ./dist/assets/css/*.css
 *    ./dist/assets/icons/a34223d4.svg
 * 处理前引用路径:background-image: url('../icons/icon.svg');
 * 处理后引用路径:background-image: url('../icons/a34223d4.svg');
 */
const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const postUrl = require('postcss-url');

function processCss() {
  const postUrlOptions = {
    url: 'copy',
    useHash: true,
    basePath: '../icons/', // 需要处理的引用文件路径,相对于 PostCSS 选项中的 'from'
    assetsPath: '../icons/', // 处理后存放引用文件路径,相对于 PostCSS 选项中的 'to'
  };

  const postCssPlugins = [postUrl(postUrlOptions)];

  const postCssOptions = {
    from: './assets/css/*.css',
    to: './dist/assets/css/*.css'
  };

  return src('./assets/css/*.css', { base: './' })
    .pipe(postCSss(postCssPlugins, postCssOptions))
    .pipe(dest('./dist/'));
}

内联文件:

const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const postUrl = require('postcss-url');

function processCss() {
  const postUrlOptions = {
    url: 'inline',
    encodeType: 'base64', // 编码方式
    maxSize: 6 * 1024 // 最大文件大小
  };

  const postCssPlugins = [postUrl(postUrlOptions)];

  return src('./assets/css/*.css', { base: './' })
    .pipe(postCSss(postCssPlugins))
    .pipe(dest('./dist/'));
}

安装:

yarn add gulp-postcss cssnano --dev

使用:

const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const cssNano = require('cssnano');

function processCss() {
  const postCssPlugins = [cssNano()];
  return src('./assets/css/*.css', { base: './' })
    .pipe(postCSss(postCssPlugins))
    .pipe(dest('./dist/'));
}

JS 文件处理

压缩 JS 文件。

安装:

yarn add gulp-uglify --dev

使用:

const { src, dest } = require('gulp');
const postCss = require('gulp-postcss');
const minifyJs = require('gulp-uglify');

function processJs() {
  return src('./assets/js/*.js', { base: './' })
    .pipe(minifyJs())
    .pipe(dest('./dist/'));
}

通用文件处理

文件名添加 Hash。

安装:

yarn add gulp-rev --dev

使用:

const { src, dest } = require('gulp');
const rev = require('gulp-rev');

function processJs() {
  return src('./assets/js/*.js', { base: './' })
    .pipe(rev())
    .pipe(dest('./dist/'));
}

根据配合 gulp-rev 生成的 manifest 文件替换文件引用。

安装:

yarn add gulp-rev gulp-rev-rewrite --dev

使用:

const { src, dest } = require('gulp');
const rev = require('gulp-rev');
const revRewrite = require('gulp-rev-rewrite');

const revManifest = './dist/rev-manifest.json';
const revOptions = {
  base: './dist/', // manifest 文件路径
  merge: true // 当已有 mainifest 文件时,合并文件
};

function processCss() {
  return src('./assets/css/*.css', { base: './' })
    .pipe(rev())
    .pipe(dest('./dist/'))
    .pipe(rev.manifest(revManifest, revOptions))
    .pipe(dest('./dist/'));
}

function processJs() {
  return src('./assets/js/*.js', { base: './' })
    .pipe(rev())
    .pipe(dest('./dist/'))
    .pipe(rev.manifest(revManifest, revOptions))
    .pipe(dest('./dist/'));
}

function reWriteRefs() {
  return src('./dist/index.html')
    .pipe(revRewrite({ manifest: src(revManifest) }))
    .pipe(dest('./dist/'));
}

将目录或文件打包成 zip 压缩包。

安装:

yarn add gulp-zip --dev

使用:

const { src, dest } = require('gulp');
const zip = require('gulp-zip');

function zipper() {
  return src('./dist/**/*.*')
    .pipe(zip('dist.zip'))
    .pipe(dest('./zip/'));
}

插件,用于给 CSS 添加兼容性前缀。

使用 来配置浏览器支持列表,可在项目根目录中添加 .browserslistrc 配置文件:

插件,用于处理 CSS 文件中使用 url() 引用的文件(SVG 或者媒体文件)。可以自动修改引用文件路径,引用文件的文件名换成 Hash,内联引用文件。

插件,用于模块化压缩 CSS 文件。

gulp-htmlmin
Options Quick Reference
gulp-processhtml
autoprefixer
PostCSS
Browserslist
postcss-url
PostCSS
cssNano
PostCSS
gulp-uglify
gulp-rev
gulp-rev-rewrite
gulp-zip