我正在尝试部署一个Web项目,为此,在构建它之前,我需要清除dist
文件夹。
当然我可以添加一个运行rm -rf dist/*
的脚本,但是一些Windows用户将无法运行它。
是否有一些npm包会删除带有命令的文件夹?
答案 0 :(得分:8)
您可以使用rimraf
:https://github.com/isaacs/rimraf。
请注意,如果您使用的是包含globstar(**
)的glob,则必须双引号。默认情况下,Unix系统并不都支持globstar,但rimraf
会为你扩展它们。 Windows不支持单引号,因此无法使用。请记住,必须使用\
在JSON中转义双引号。
答案 1 :(得分:4)
最近,我面临与您相同的挑战,就像用户Kevin Kevin在上面的评论中所述,我对解决方案感兴趣,而不仅仅是“使用此npm软件包”。因此,我将其扔在这里,希望有人会发现它有用。
因此,我要做的是获取一些代码I found in StackOverflow,将其放在.js文件中,并将其绑定到package.json中的npm脚本中。以我为例,目标是删除.ts脚本编译到的“ / out”文件夹,但可能性无穷!
使用此解决方案,您只需使用“ npm run cleanstart”启动应用。
package.json
{
"name": "my_app",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"tsc": "tsc",
"precleanstart": "node clean.js",
"cleanstart": "npm start",
"prestart": "npm run tsc",
"start": "node out/main.js"
},
"dependencies": {
"@babel/runtime": "^7.0.0-beta.54",
"babel-runtime": "^6.26.0",
"body-parser": "^1.18.3",
"express": "^4.16.3",
"typescript": "^3.0.3"
}
}
clean.js
var fs = require('fs');
function deleteFolderRecursive(path) {
if (fs.existsSync(path) && fs.lstatSync(path).isDirectory()) {
fs.readdirSync(path).forEach(function(file, index){
var curPath = path + "/" + file;
if (fs.lstatSync(curPath).isDirectory()) { // recurse
deleteFolderRecursive(curPath);
} else { // delete file
fs.unlinkSync(curPath);
}
});
console.log(`Deleting directory "${path}"...`);
fs.rmdirSync(path);
}
};
console.log("Cleaning working tree...");
deleteFolderRecursive("./out");
console.log("Successfully cleaned working tree!");
答案 2 :(得分:0)
我今天发现了这个
npm i clean-webpack-plugin --save-dev
plugins: [
...
new CleanWebpackPlugin(['dist'])
]
答案 3 :(得分:0)
npm install --save-dev del-cli
"scripts": {
"delete": "del-cli --force ../folder-to-delete"
}
要删除父文件夹时请注意“ --force”
答案 4 :(得分:0)
del 包装是最好的解决方案 https://github.com/sindresorhus/del