“tsc --build --clean”和“rm -rf *.js”有什么区别?

9

我有一个关于使用tsc命令和参数--build --clean的问题,我知道该命令用于清除/删除之前由Transpiler(tsc)生成的 .js文件。

这个命令有什么特别之处或重要性?如果我需要删除所有的.js文件,我可以在目录中轻松完成它,只需使用rm -rf *.jsdel *.js 命令即可。

是否还有其他遗漏的部分需要补充?请教一下。

2个回答

16
不同之处在于,rm命令会毫不犹豫地删除任何文件,即使这些文件并不是由TypeScript转译生成的。
注意!执行 tsc --build --clean 命令只会删除那些有对应的 .ts 文件生成的 .js 文件。这意味着,如果你重命名了 .ts 文件、删除了 .ts 文件或者创建了新的 .ts 文件,然后运行 tsc --build --clean 命令,之前有对应 .ts 文件的旧的 .js 文件将不再被删除
如果你真的想在构建之前进行清理,特别是当 .ts 文件集合发生变化时,你应该使用其他方式删除输出文件夹。例如,在 Unix shell 中使用 rm -rf dist/ 命令,或者在 Windows PowerShell 中使用 rm -r -fo dist/ 命令。或者,假设你使用 TypeScript,很可能也在使用 Node.js,可以使用一个跨平台的包,比如 rimraf,来删除输出文件夹。

1
@itsraghz tsc 知道你的项目有哪些 .ts 文件,因此它知道在构建时会创建哪些 .js 文件。这些文件是 --clean 将要删除的文件。 - ruohola
2
我刚做了一个快速测试。看起来它会删除与.ts文件匹配的.js文件。我创建了一个dummy.ts并运行tsc以获取dummy.js,然后在运行tsc --build --clean之前删除了原始的dummy.tsc,只是为了发现dummy.js文件保持不变 :) 所以这就是答案?感谢您提供的好场景供我们玩耍!还有其他区别吗,或者就是这些? - itsraghz
1
是的,它完全是无状态的。如果你创建了 dummy.tsdummy.js--clean 将会删除 .js 文件,即使它实际上并不是通过构建 TypeScript 创建的。 - ruohola
1
非常好。谢谢@ruohola,我同意您的话。 - itsraghz
1
@haneSmitter 我更新了答案。手动删除输出文件夹似乎更安全。 - undefined
显示剩余5条评论

14

通常情况下,--clean 没有什么用处。如果你曾经重命名、移动或删除过源文件,那么 clean 命令将不能清理已编译的输出文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接