Skip to content

构建工具

构建工具指的是 js 的模块打包器(module bundler)

一般常见的有

  • webpack
  • rollup
  • tsup
  • vite
  • ...

它们有的用来开发 lib 包有的则是开发和打包 js 应用(如打包 PWA,Electron 等)。

它们一般功能很灵活但配置较为复杂。这里以其中几个为例

webpack

webpack 提供的功能主要是单页应用的开发服务器以及打包压缩代码

webpack5 与 5 以下版本相比减少了很多包袱。以版本 4 为例子。

在初始化后,还需安装开发服务器的依赖

bash
pnpm i webpack webpack-cli webpack-dev-server -D

下面两个命令分别启动开发服务器和打包

  • pnpm webpack-dev-server
  • pnpm webpack

在配置文件中配置 output 可以以文件名 hash 来规避浏览器缓存

javascript
output: {
    filename: "[hash:8]-bundle.js",
    path: join(__dirname, "dist")
},

下载对应的 loader 配置非 js 的引入以及热重载

javascript
rules: [{
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
    }, {
        test: /\.(png|svg|jpg|gif)$/,
        use: ["file-loader"],
    }, {
        test: /\.(woff|woff2|eot|ttf|otf)$/,
        use: ["file-loader"],
    },
    //热重载html
    {
        test: /\.(htm|html)$/,
        use: ["raw-loader"],
    },
]

届时可以在 js 中引入非 js

javascript
import "./index.html"
import "./style.css"

//Other javascript code

less 转 css ,typescript 转 js,图片转 webp 等功能的 loader 用法类似。webpack 会自己进行依赖分析并编译为浏览器所需的格式。

Vite

Vite是依靠浏览器对 ES module 支持的开发/生产服务器和打包器,它对 vue 优先支持。

vite 免配置 less sass scss stylus 以及 typescript,只需要安装依赖的预处理器即可

创建项目

bash
pnpm init vite@latest

在 GitHub 等社区可以找到 vite 常用的项目模板。

下文本来是介绍 snowpack 的。但是 snowpack 在 2022 年 12 月停止维护了。snowpack 官网建议新项目使用 vite。