ZetCode

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

我们创建两个目录和三个空文件。

public/index.html
<!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 文件的压缩版本。

src/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;
}

该代码对表格的第二列进行排序。

gulpfile.js
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 教程

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。