我目前在我的package.json中有以下脚本,用于在我运行“npm run build”时删除我的bundles文件夹中的所有“.js”文件。当在开发服务器中运行它时,它工作正常,但当在Windows机器中运行时,它会中断。
{
"scripts": {
"build": "rm bundles/*.js && webpack",
},
}
由于我正在散列所有的构建文件,所以在添加新的构建文件之前,我需要将它们全部删除,这样我就不会以一堆旧的构建结束。
有没有一个“rm bundles/*.js”可以同时在Mac和Windows中使用?
5条答案
按热度按时间ajsxfq5m1#
npm包rimraf可用于
scripts
中的命令行。首先在项目中本地安装:
然后更新package. json文件中的
build
脚本:rm -rf
命名)可删除这些文件。文件:
https://www.npmjs.com/package/rimraf#cli
hk8txs482#
看一看shelljs:
ShellJS是一个基于Node.js API的Unix shell命令的可移植(Windows/Linux/OS X)实现。您可以使用它来消除shell脚本对Unix的依赖,同时仍然保留其熟悉而强大的命令。您还可以全局安装它,以便从Node项目之外运行它--告别那些粗糙的Bash脚本吧!
并且进一步到shelljs/shx,其提供以下示例:
你可能还想看看Gulp或Grunt,它们都被称为任务运行器,Gulp有gulp-clean,Grunt有grunt-contrib-clean,它们都是用来删除文件夹或文件的。
让我们以Grunt为例:
1.将带有
npm i -g grunt-cli
的Grunt CLI添加到系统中1.使用
npm i --save-dev grunt grunt-contrib-clean
将所需的包添加到项目中1.创建名为
gruntfile.js
的文件1.添加以下行:
1.更新您的脚本
"build": "grunt && webpack"
jjjwad0x3#
跨平台,无依赖性
如果您和我一样,不想添加11个依赖项来删除一个目录,那么可以使用节点退出代码来有条件地运行脚本:
例如,删除./dist文件夹
pobjuy324#
如果您不关心“rm/del not found”console.log,下面是一个简短而简单的解决方案,不需要额外的依赖项,rm适用于Mac和Linux,del适用于Windows:
kfgdxczn5#
更新:
recursive-fs
添加了用于删除文件夹的CLI,因此您现在可以执行以下操作:原件:如果您决定删除单个文件夹不需要额外的11个包,可以使用recursive-fs和一个简短的脚本:
或者,有人可以编写一个NPM包来实现这一点,并且对
recursive-fs
只有一个依赖项,这仍然比rimraf少9个包。另一个选择是派生recursive-fs
并发布一个NPM包,其中包含一个CLI,使使用它进行递归删除更容易。