Javascript NPM rimraf-当文件夹丢失时继续执行(停止退出代码1)

Javascript NPM rimraf-当文件夹丢失时继续执行(停止退出代码1),javascript,node.js,shell,command-line,npm,Javascript,Node.js,Shell,Command Line,Npm,我有一个npm脚本设置为几个同步命令。启动命令是npm run clean:install“ 顺序如下: “安装:全部”:“npm安装和bower安装”, “清理”:“npm运行rimraf--节点模块文档键入覆盖范围wwwroot bower\U组件” “预清洁:安装”:“npm运行清洁”, “清理:安装”:“npm设置进度=false&&npm运行安装:全部” 如果所有目录都存在,则可以正常工作。问题是,如果任何目录已被删除,则存在代码为1的脚本,并阻止所有其他同步脚本运行 这意味着它无法运

我有一个npm脚本设置为几个同步命令。启动命令是npm run clean:install“

顺序如下:

“安装:全部”:“npm安装和bower安装”,
“清理”:“npm运行rimraf--节点模块文档键入覆盖范围wwwroot bower\U组件”
“预清洁:安装”:“npm运行清洁”,
“清理:安装”:“npm设置进度=false&&npm运行安装:全部”

如果所有目录都存在,则可以正常工作。问题是,如果任何目录已被删除,则存在代码为1的脚本,并阻止所有其他同步脚本运行

这意味着它无法运行clean:install的原始命令,即“
”clean:install:“npm set progress=false&&npm run install:all

来自npm的错误:

npm ERR! angular2-webpack-starter@5.0.4 clean: `npm cache clean && npm run 
rimraf -- node_modules doc typings coverage wwwroot bower_components`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the angular2-webpack-starter@5.0.4 clean script 'npm cache clean && npm run rimraf -- node_modules doc typings coverage wwwroot bower_components'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the angular2-webpack-starter package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm cache clean && npm run rimraf -- node_modules doc typings coverage wwwroot bower_components
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular2-webpack-starter
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls angular2-webpack-starter
npm ERR! There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
最后一行给出了它。它需要
节点\u模块
,但找不到,因此失败

如何使脚本继续执行以忽略这些失败(缺少目录)


编辑:发生错误的原因是rimraf正在删除
node_模块
并清除自身。清除文件夹后,rimraf消失,退出代码1。我是否可以排除节点模块中的rimraf文件夹,使其正确存在?

我(可能)正在查看您正在使用的此文件夹。你看过说明书了吗?他们要求您在使用该项目之前运行
npm安装打字网页包开发服务器rimraf webpack-g
,其中包括全局安装
rimraf
。如果您未能做到这一点,那么使用
npm run clean:install
,或者任何调用此脚本的操作都将失败,因为
rimraf
模块在本地
节点\u模块中找不到(如果已删除),或者它将删除自身。

解决方案有点棘手。问题是因为rimraf正在删除自身,因为它只在本地安装在node_模块中。因此,一旦它删除了node_modules dir,程序就死掉了

我意识到有必要添加一个任务,让它在全球范围内安装rimraf。执行的第一个任务是
install:all
。然后rimraf在全局路径中。但是,rimraf是许多其他节点模块的依赖项,因此它一直在本地安装,因此忽略了全局路径。它一直在消亡,因为它仍然引用本地节点模块文件夹

诀窍是在执行任何rimraf命令之前在本地卸载rimraf。现在它被迫使用全局路径,因为它在本地不存在。

"preinstall:all": "npm install typings webpack-dev-server rimraf webpack -g",
"install:all": "npm install && bower install",

"prerimraf": "npm uninstall rimraf",
"rimraf": "rimraf",

"clean": "npm run rimraf -- node_modules doc typings coverage wwwroot bower_components"

"preclean:install": "npm run clean",
"clean:install": "npm set progress=false && npm run install:all"

install:all
在项目加载时执行后(在Visual Studio 2015中,Task Runner Explorer有一个名为
project Open
的绑定),有时我希望清理所有内容并重新开始。现在我可以简单地执行
clean:install
并卸载node_模块,然后立即重新安装,没有问题!退出代码0。好极了

rimraf
或执行的(
rm-rf
-on*NIX平台)始终以代码0退出,即使文件夹不存在。您得到的错误不在
rimraf
模块内。您正在运行
npm cache clean
之前的
rimraf
,您如何确定这不是问题?很好。尽管我坚持基本原则,只运行rimraf命令,但仍会出现错误npm run rimraf--node_modules doc typings覆盖范围wwwroot bower_components
>rimraf“node_modules”“doc”“typings”“coverage”“wwwroot”“bower_components”
系统找不到指定的路径。
我解决了问题。这是因为rimraf正在移除自身,因为它位于node_模块内。一旦它自身消失,脚本将失败代码1。有没有办法在node_模块中删除rimraf和rimraf目录?谢谢,在你发布答案时,我刚刚想到了这个问题。我需要让其他开发人员这样做,只需启动项目而不去命令行,所以我制作了一个npm脚本,全局执行安装。虽然我应该将所有这些都添加到全局安装中,但感谢您让我知道。我相信你。是的,我使用的是angular2 webpack初学者样板文件,我将其与visual studio开发环境的ASP.net Core 1.0集成。