如何使用 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.exe 或 Powershell 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.json
的scripts
部分配置如下:
...
"scripts": {
"clean": "node .scripts/clean -p path/to/bundle.js"
},
...
补充说明
在所有三个示例中 npm-script
要点上面的路径 path/to/bundle.js
需要重新定义一个必要的。
要通过 CLI 清除 bundle.js
运行 的内容:
$ npm run clean
npm 包 rimraf 和 touch 都可以在 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,这意味着如果第一个命令失败,第二个命令将不会执行)。
如何使用 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.exe 或 Powershell 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.json
的scripts
部分配置如下:
...
"scripts": {
"clean": "node .scripts/clean -p path/to/bundle.js"
},
...
补充说明
在所有三个示例中
npm-script
要点上面的路径path/to/bundle.js
需要重新定义一个必要的。要通过 CLI 清除
bundle.js
运行 的内容:
$ npm run clean
npm 包 rimraf 和 touch 都可以在 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,这意味着如果第一个命令失败,第二个命令将不会执行)。