Gulp 压缩
最后修改于 2023 年 10 月 18 日
在本文中,我们将展示如何使用 gulp-minify 插件压缩 JS 代码。
Gulp
Gulp 是一个 Node 任务运行器。它是前端 Web 开发中的一个流式构建系统。它有助于自动化诸如复制文件、压缩 JavaScript 代码或将 TypeScript 编译为 JavaScript 等任务。
gulp-minify 插件可以压缩 JS 文件。生成的文件会更小。压缩后的文件具有 -min.js 扩展名。
安装 Gulp 和 gulp-minify
我们初始化一个 Node.js 项目并安装 Gulp 和 gulp-minify 插件。
$ npm init -y $ npm i --global gulp-cli $ npm i gulp --save-dev
我们初始化一个 Node 项目并安装 Gulp 和 Gulp CLI。
$ npm i --save-dev gulp-minify
我们安装 gulp-minify 插件。
Gulp-minify 示例
下面的示例演示了 gulp-minify 的用法。我们有一个 HTML 表格,显示国家及其人口。有一个排序按钮,用于对包含人口值的第二列进行排序。用于对表格进行排序的 JS 代码使用 gulp-minify 进行压缩。
$ mkdir public/js -p $ mkdir src/js -p $ touch public/index.html gulpfile.js src/js/main.js
我们创建两个目录和三个空文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Countries</title>
</head>
<body>
<table id="tbl">
<tr>
<th>Country</th>
<th>Population</th>
</tr>
<tr>
<td>Slovakia</td>
<td>5429000</td>
</tr>
<tr>
<td>Norway</td>
<td>5271000</td>
</tr>
<tr>
<td>Croatia</td>
<td>4225000</td>
</tr>
<tr>
<td>Russia</td>
<td>143439000</td>
</tr>
<tr>
<td>Mexico</td>
<td>122273000</td>
</tr>
<tr>
<td>Vietnam</td>
<td>95261000</td>
</tr>
<tr>
<td>Sweden</td>
<td>9967000</td>
</tr>
<tr>
<td>Iceland</td>
<td>337600</td>
</tr>
<tr>
<td>Israel</td>
<td>8622000</td>
</tr>
<tr>
<td>Hungary</td>
<td>9830000</td>
</tr>
<tr>
<td>Germany</td>
<td>82175700</td>
</tr>
<tr>
<td>Japan</td>
<td>126650000</td>
</tr>
</table>
<button id="mybtn">Sort</button>
<script src="js/main-min.js"></script>
</body>
</html>
这是 index.html 文件。它加载 main-min.js 文件,这是 JS main.js 文件的压缩版本。
let btn = document.getElementById('mybtn');
btn.addEventListener('click', sortTable);
function sortTable() {
const tbl = document.getElementById("tbl").tBodies[0];
let store = [];
for (let i = 0, len = tbl.rows.length; i < len; i++) {
let row = tbl.rows[i];
let value = parseInt(row.cells[1].textContent || row.cells[1].innerText);
if (!isNaN(value)) {
store.push([value, row]);
}
}
store.sort((x, y) => {
return x[0] - y[0];
});
for (let i = 0, len = store.length; i < len; i++) {
tbl.appendChild(store[i][1]);
}
store = null;
}
该代码对表格的第二列进行排序。
const { src, dest } = require("gulp");
const minify = require("gulp-minify");
function minifyjs() {
return src('src/js/main.js', { allowEmpty: true })
.pipe(minify({noSource: true}))
.pipe(dest('public/js'))
}
exports.default = minifyjs;
这是包含我们的 Gulp 任务的 gulpfile.js。
function minifyjs() {
return src('src/js/main.js', { allowEmpty: true })
.pipe(minify({noSource: true}))
.pipe(dest('public/js'))
}
src() 创建一个用于读取 main.js 文件的流。使用 pipe(),我们将流式数据传递给 minify() 函数。最后,我们将编译后的数据传递给 dest(),它又创建了一个将数据写入文件系统的流。最终文件被复制到 public/js 目录。
exports.default = minifyjs;
默认任务是在没有通过 Gulp CLI 指定任务名称时执行的任务。它运行 minifyjs 任务。
$ gulp [20:23:47] Using gulpfile ~/Documents/prog/js/gulp-lib/gulpfile.js [20:23:48] Starting 'default'... [20:23:48] Finished 'default' after 71 ms
我们运行默认任务。main-min.js 文件已生成。
在本文中,我们使用了 gulp-minify 来压缩 JS 代码。
您可能还对以下相关教程感兴趣:Node Sass 教程、Gulp 入门教程 和 Gulp Sass 教程。
列出 所有 JavaScript 教程。