我正在使用Rollup构建我的TypeScript源代码。 我想要仅删除注释,而不进行任何缩小,以便在调试时热更新代码。
我已经尝试过rollup-plugin-terser
,它可以删除注释,但它也会对我的代码进行某种程度的缩小,我无法完全禁用缩小。
我该怎么做? 谢谢!
我正在使用Rollup构建我的TypeScript源代码。 我想要仅删除注释,而不进行任何缩小,以便在调试时热更新代码。
我已经尝试过rollup-plugin-terser
,它可以删除注释,但它也会对我的代码进行某种程度的缩小,我无法完全禁用缩小。
我该怎么做? 谢谢!
像 @jujubes 在评论中回答的那样,rollup-plugin-cleanup 可以完成这个任务。我想再详细解释一下。
有三点:
ts
添加到扩展列表中,例如 extensions: ["js", "ts"]
— 否则源码不会被处理,即使在它之前进行了转换步骤 typescript()
— 我最初来到这里是为了调查为什么 rollup-plugin-cleanup
不能处理 TS 文件,原来只是缺少了 ts
扩展名 ♂️/* istanbul ignore else */
的 istanbul
语句,因此最好将它们排除在外,comments: "istanbul",
console.log
是一个单独的挑战,可以使用 @rollup/plugin-strip 完成,并与 rollup-plugin-cleanup
配合使用。在我的情况下,根据一个 "dev" 或 "prod" 的 Rollup 构建(由 CLI 标志 --dev
控制,例如 rollup -c --dev
),我仅在 prod
构建中移除 console.log
。但是注释将在 dev 和 prod 构建中都被删除。目前,我使用:
import cleanup from "rollup-plugin-cleanup";
...
{
input: "src/main.ts",
output: ...,
external: ...,
plugins: [
...
cleanup({ comments: "istanbul", extensions: ["js", "ts"] }),
...
这是一个使用 rollup-plugin-cleanup
的 Rollup 配置的示例,这是我的 Rollup 配置生成器(在 monorepo 中,手动维护 Rollup 配置非常困难,因此我使用代码生成器)。如果你决定连接 --dev
CLI 标志,需要在脚本结束之前从 commandLineArgs
中删除该标志,否则 Rollup 会抛出异常,详见原始提示和实际操作中的情况。
rollup-plugin-terser
插件就能达到同样的效果。它基于terser,更多信息可以在该项目的README中找到,下面是关于压缩选项的部分。因此,在你的情况下,rollup.config.js
文件的这一部分应该如下所示:plugins: [
terser({
// remove all comments
format: {
comments: false
},
// prevent any compression
compress: false
}),
],
请注意,您也可以仅在生产环境下启用部分配置。因此,在您的rollup.config.js
中声明production
常量后,您可以这样操作:
import { terser } from 'rollup-plugin-terser';
const production = !process.env.ROLLUP_WATCH;
export default {
plugins: [
production && terser({
// terser plugin config here
}),
],
};