如何用npm清理(删除内容)文件夹

时间:2016-11-18 17:29:16

标签: deployment npm

我正在尝试部署一个Web项目,为此,在构建它之前,我需要清除dist文件夹。

当然我可以添加一个运行rm -rf dist/*的脚本,但是一些Windows用户将无法运行它。

是否有一些npm包会删除带有命令的文件夹?

5 个答案:

答案 0 :(得分:8)

您可以使用rimrafhttps://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'])
 ]

仅供参考:https://www.npmjs.com/package/clean-webpack-plugin

答案 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