我怎样才能与NPM脚本删除文件(bundle.js
)的内容,以便运行npm run clean
的bundle.js
后,也可以只是一个空文件.js
?
如果你只打算支持bash
环境然后定义在clean
命名package.json
脚本如下图所示:
...
"scripts": {
"clean": "echo > path/to/bundle.js"
},
...
以上只是echo
是一个空字符串使用bash的echo命令文件。
如果只打算支持Windows
环境中,(即,经由cmd.exe的或Powershell的例如运行),然后改变npm-script
如下:
...
"scripts": {
"clean": "echo: > path/to/bundle.js"
},
...
同样,这次我们也echo
一个空字符串的文件,但是这次我们使用windows的/ 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
和scripts
的package.json
部分配置如下一个隐藏的文件夹:
...
"scripts": {
"clean": "node .scripts/clean -p path/to/bundle.js"
},
...
npm-script
读取path/to/bundle.js
将需要被重新定义的所需要的路径的上方要旨。bundle.js
的内容运行通过您的CLI如下:$ npm run clean
故宫包rimraf和触摸都可以在scripts
命令行用法。
首先在本地安装到您的项目:
$ 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命令(其是CLI触摸的一部分)创建空文件。 请参阅:https://www.npmjs.com/package/touch#cli
该&&
运营商有效地运行两个命令(在技术上,它做布尔AND这意味着第二个命令,如果第一个命令失败,将不执行)。