我正在尝试部署一个 Web 项目,但在
build
之前,我需要清除/删除 dist
文件夹。
我可以添加一个可以运行
rm -rf dist/*
的脚本,但这在 Windows 系统上不起作用。
是否有一些 npm 包和其他解决方案允许使用适用于每个操作系统的命令删除文件夹?
您可以使用
rimraf
:https://github.com/isaacs/rimraf。
请注意,如果您使用包含 globstar (
**
) 的 glob,则必须将它们加双引号。默认情况下,Unix 系统并不都支持 globstar,但是 rimraf
将为您扩展它们。 Windows 不支持单引号,因此不能使用单引号。请记住,双引号必须在 JSON 中使用 \
进行转义。
最近我面临着和你一样的挑战,但我对一个不仅仅是“使用这个 npm 包”的解决方案感兴趣。所以我把它扔在这里希望有人会发现它有用。
所以,我所做的就是获取一些代码我在 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!');
npm install --save-dev del-cli
"scripts": {
"delete": "del-cli --force ../folder-to-delete"
}
当你想删除父文件夹时请注意“--force”
我今天发现了这个:
npm i clean-webpack-plugin --save-dev
plugins: [
...
new CleanWebpackPlugin(['dist'])
]