如何使用 npm 清理捆绑文件?

How can I clean a bundle file with npm?

如何使用 npm 脚本删除文件 (bundle.js) 的内容,以便在 运行 npm run clean 之后 bundle.js 只是一个空的 .js 文件?

bash

如果您只打算支持 bash 环境,那么在 package.json 中定义一个名为 clean 的脚本,如下所示:

...
"scripts": {
  "clean": "echo > path/to/bundle.js"
},
...

上面只是使用 bash 的 echo 命令向文件 echo 发送了一个空字符串。


Windows

如果您只打算支持 Windows 环境,(即 运行ning 通过 cmd.exePowershell for例如),然后将 npm-script 更改如下:

...
"scripts": {
  "clean": "echo: > path/to/bundle.js"
},
...

同样,这次我们也 echo 一个空字符串到文件,但是这次我们使用 windows's/cmd echo命令。

注意 echo

后的冒号 (:)

跨平台

不幸的是,bash 解决方案不会 运行 在 Windows 上,反之亦然( ...这是因为需要不同的 echo 语法)。

如果您需要跨平台工作的解决方案(我想您可能会这样做),请考虑编写自定义 node.js 实用程序脚本并通过 npm-scripts.

下面显示了如何实现:

clean.js

var fs = require('fs');

if (process.argv.indexOf('-p') !== -1) {
  var filePath = process.argv[process.argv.indexOf('-p') + 1];
  fs.writeFileSync(filePath, '');
}

clean.js可以保存到项目根目录下名为.scripts的隐藏文件夹中,在package.jsonscripts部分配置如下:

...
"scripts": {
  "clean": "node .scripts/clean -p path/to/bundle.js"
},
...

补充说明

  1. 在所有三个示例中 npm-script 要点上面的路径 path/to/bundle.js 需要重新定义一个必要的。

  2. 要通过 CLI 清除 bundle.js 运行 的内容:

$ npm run clean

npm 包 rimraftouch 都可以在 scripts.[=19= 中用于命令行使用]

首先在本地安装到您的项目中:

$ npm install --save-dev rimraf touch

然后将 clean 脚本添加到您的 package.json 文件中:

"scripts": {
   "clean": "rimraf dist/bundle.js && nodetouch dist/bundle.js",
}

要使用脚本:

$ npm run clean

rimraf命令(以rm -rf命名)删除文件。
参见:https://www.npmjs.com/package/rimraf#cli

nodetouch 命令(touch 的 cli 部分)创建空文件。
参见:https://www.npmjs.com/package/touch#cli

&& 运算符有效地运行两个命令(从技术上讲,它正在执行一个布尔值 AND,这意味着如果第一个命令失败,第二个命令将不会执行)。