今天使用 rollup 3 配置项目的时候, 发现安装常用的 terser 压缩插件 rollup-plugin-terser 出了问题,上 github 浏览了一圈,发现包名不能用在 3.x 版本了, 有第三方库 rollup-plugin-minification 可以替代。
2022.10.28 更新 作者废弃了旧库,并通知大家转移到官方插件库(使用了 @rollup/ 打头)
这里附一下 package.json 里今天过了一遍的常见插件,并且已经测试 3.2.x 可用:
"devDependencies": {
"@babel/preset-env": "^7.19.4",
"@rollup/plugin-alias": "^4.0.2",
"@rollup/plugin-babel": "^6.0.2",
"@rollup/plugin-html": "^1.0.0",
"@rollup/plugin-json": "^5.0.1",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-terser": "^0.1.0",
"postcss": "^8.4.18",
"rollup": "^3.2.3",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-minification": "^0.2.0",
"rollup-plugin-postcss": "^4.0.2"
},
主要的报错信息如下
这个意思就是说原 terser 插件最多只能支持到 2.x 。那怎么办呢,总不能不压缩代码对吧。
遇事不决 Github
果不其然啊,已经很多人提了 issue 了,不过好在下面正好有一个解决方案
// import { terser } from "rollup-plugin-terser";
import { terser } from "rollup-plugin-minification";
好了, 这下使用这个新的库, 就能正常使用 terser 进行压缩了。
2022.10.28 Update
后来我又翻了一下,刚好今天官方现在已经改名并入他们的插件库了 @rollup 打头,
插件的原作者也发了一篇公告mark 为 deprecated ,以后构建就用这个新版本吧。
我这篇文章写的还真是新鲜及时,希望有不解的朋友们看到。
plugins/packages/terser at master · rollup/plugins (github.com)
所以还是安装官方维护的插件库 @rollup/plugin-terser
npm install @rollup/plugin-terser --save-dev
import terser from "@rollup/plugin-terser"; // 不用解构出来 有默认导出
...
export default {
input: "src/index.js",
output: {
dir: "dist",
// file: "bundle.js",
entryFileNames: "[name]-[hash].js",
format: "cjs",
plugins: [
terser(),
],
},