如何使用npm脚本删除文件(bundle.js
)的内容,以便在运行npm run clean
后bundle.js
只是一个空的.js
文件?
答案 0 :(得分:0)
如果您只打算支持bash
个环境,请在clean
中定义名为package.json
的脚本,如下所示:
...
"scripts": {
"clean": "echo > path/to/bundle.js"
},
...
以上简单echo
是使用 bash&#39> echo命令的文件的空字符串。
如果您只打算支持Windows
个环境(例如,通过 cmd.exe 或 Powershell运行),请更改{{1}如下:
npm-script
同样,这次我们还...
"scripts": {
"clean": "echo: > path/to/bundle.js"
},
...
为文件的空字符串,但这次我们使用 windows' s / cmd echo命令。
请注意echo
:
)
不幸的是 bash 解决方案不会在 Windows 上运行,反之亦然(...这是因为需要不同的echo
语法)。
如果您需要跨平台工作的解决方案,我想您可能会这样做,那么请考虑编写自定义 node.js 实用程序脚本并通过echo
调用它。
以下说明了如何实现这一目标:
<强> clean.js 强>
npm-scripts
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
的{{1}}部分进行配置,如下所示:
scripts
在上述所有三个示例package.json
中,需要重新定义读取...
"scripts": {
"clean": "node .scripts/clean -p path/to/bundle.js"
},
...
的路径所需的内容。
要清除npm-script
的内容,请通过CLI运行以下内容:
path/to/bundle.js
答案 1 :(得分:0)
npm软件包 rimraf 和 touch 均可在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 命令( touch 的cli部分)创建空文件。
参见:https://www.npmjs.com/package/touch#cli
&&
运算符有效地运行了两个命令(从技术上讲,它执行的是布尔值 AND ,这意味着如果第一个命令失败,第二个命令将不会执行)。