跨平台"rm"命令

jai*_*fps 11 windows macos node.js

我目前在package.json中有以下脚本,用于删除我的bundle文件夹中的所有".js"文件,以便我运行"npm run build".它在开发服务器中运行时工作正常,但在Windows机器上运行时会中断.

{
  "scripts": {
    "build": "rm bundles/*.js && webpack",
  },
}
Run Code Online (Sandbox Code Playgroud)

由于我正在对所有构建文件进行哈希处理,因此我需要在添加新文件之前将它们全部删除,这样我就不会得到一堆旧版本.

是否有适用于Mac和Windows的"rm bundles/*.js"?

hen*_*lst 14

跨平台,无依赖

如果您像我一样,不想仅仅为了删除目录而添加 11 个依赖项,则可以使用节点退出代码有条件地运行脚本:

例如删除 ./dist 文件夹

{
  "scripts": {
    "clean": "npm run clean:win && npm run clean:lin",
    "clean:win": "node -e \"if (process.platform === 'win32') process.exit(1)\" || , if exist dist rmdir /Q /S dist",
    "clean:lin": "node -e \"if (process.platform !== 'win32') process.exit(1)\" || rm -rf dist",
  }
}

Run Code Online (Sandbox Code Playgroud)
npm run clean
Run Code Online (Sandbox Code Playgroud)


Dem*_*ian 10

npm软件包rimraf可在中用于命令行scripts

首先在本地安装到您的项目中:

$ npm install --save-dev rimraf
Run Code Online (Sandbox Code Playgroud)

然后更新package.json文件中的build脚本:

"scripts": {
   "prebuild": "rimraf bundles/*.js",
   "build": "webpack"
}
Run Code Online (Sandbox Code Playgroud)

rimraf命令(而得名rm -rf),删除这些文件。

说明文件:https
//www.npmjs.com/package/rimraf#cli

rimraf是一个完善的项目,在GitHub上有3,000多秒。


pza*_*ger 9

看看shelljs:

ShellJS是Node.js API之上的Unix shell命令的可移植(Windows/Linux/OS X)实现.您可以使用它来消除shell脚本对Unix的依赖性,同时仍保留其熟悉且功能强大的命令.您也可以在全局安装它,这样您就可以从Node项目外部运行它 - 告别那些粗糙的Bash脚本!

还有shelljs/shx,它提供了以下示例:

{
  "scripts": {
    "clean": "shx rm -rf build dist && shx echo Done"
  }
}
Run Code Online (Sandbox Code Playgroud)

替代:

您可能还想看看GulpGrunt,这两个都叫做Task Runners.Gulp 清洁干净,Grunt 干净利落.两者都旨在删除文件夹和/或文件.

我们以Grunt为例:

  1. 将Grunt CLI添加npm i -g grunt-cli到您的系统
  2. 用你的项目添加所需的包 npm i --save-dev grunt grunt-contrib-clean
  3. 创建一个名为的文件 gruntfile.js
  4. 添加以下行:
module.exports = (grunt) => {
  'use strict';

  grunt.initConfig({
    clean: ['bundles'],
  });

  grunt.loadNpmTasks('grunt-contrib-clean');

  grunt.registerTask('default', ['clean']);
};
Run Code Online (Sandbox Code Playgroud)
  1. 更新您的脚本 "build": "grunt && webpack"