2016-05-08 15 views
1

いくつかの同期コマンドにnpmスクリプトが設定されています。開始コマンドはnpm run clean:install"です。ここでNPM rimraf - フォルダがないときに実行を続行します(終了コード1を停止します)。

は配列であるすべてのディレクトリが存在する場合

"install:all": "npm install && bower install", "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"

が正常に動作します。問題は、いずれかのディレクトリが既に削除されている場合、スクリプトはコード1で存在し、追加の同期スクリプトが実行されないようにすることです。

だから、それはそれはきれいなの元のコマンドを実行するfailes意味:最後の行がそれを離れて与え

npm ERR! [email protected] 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 [email protected] 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? 

:NPMから「"clean:install": "npm set progress=false && npm run install:all

エラーであるインストールします。それはnode_modulesを望んでいますが、見つからないので失敗します。

これらの失敗(ディレクトリがない)を無視するためにスクリプトを実行し続けるにはどうすればよいですか?

編集:rimrafがnode_modulesを削除してそれを拭き取っているためにエラーが発生します。フォルダが消去されたら、rimrafは終了し、コード1を終了します。node_modules内のrimrafフォルダを除いて、正しく存在するようにすることはできますか?

+0

フォルダが存在しない場合でも、 'rimraf'または実行された(' rm -rf'-on * NIXプラットフォーム)は常にコード0で終了します。あなたが得ているエラーは 'rimraf'モジュール内には存在しません。あなたは 'rimraf'の前に' npm cache clean'を実行していますが、どうすればそれが問題ではないと確信できますか? –

+0

良い点。私が基本に固執してrimrafコマンドを実行しても、エラーが出ます>> npmはrimrafを実行しますが、node_modulesのdocの入力カバレッジは '> rimraf" node_modules "" doc "" typings "" coverage "" wwwroot "" bower_components "' 'システムは指定されたパスを見つけることができません。 ' – TetraDev

+0

問題を見つけました。これは、リムラフがnode_modules内に存在するため、リムラフ自体が削除されているためです。一旦それが一掃されると、スクリプトはコード1に失敗します。node_modules内のrimrafディレクトリを置き換えて除外する方法はありますか? – TetraDev

答えて

0

解決策は少しトリッキーでした。 rimrafはnode_modulesにローカルにインストールされているだけなので、問題はそれ自体を削除していたためです。したがって、node_modulesディレクトリを削除するとすぐに、プログラムは終了しました。

rimrafをグローバルにインストールするタスクを追加する必要があることを認識しました。最初に実行するタスクはinstall:allです。そしてrimrafはグローバルなPATHにあります。しかし、rimrafは多くの他のnode_modulesの依存関係であったでしたので、ローカルにインストールされ続けていたため、グローバルPATHは無視されました。ローカルのnode_modulesフォルダを参照していたので、それは壊れていました。

トリムは、rimrafコマンドを実行する前にrimrafをローカルでアンインストールすることでした。現在、ローカルに存在しないため、グローバルPATHを使用する必要があります。 install:all

"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" 

プロジェクトのロード上で実行されています(2015年のVisual Studioで、タスクランナーExplorerが結合Project Open呼ばれた)、私はすべてをきれいにし、新鮮な開始する時間があります。今すぐclean:installを実行し、node_modulesをアンインストールして問題なくすぐに再インストールできます。終了コード0。甘い!

3

あなたが使用しているこのboilerplate projectを(おそらく)見ています。あなたは指示を読んだか?彼らはあなたがnpm install typings webpack-dev-server rimraf webpack -gを実行して、rimrafをグローバルにインストールすることを要求しています。その前には、プロジェクトを使用していても前にです。 npm run clean:installまたはこのスクリプトを呼び出すものを使用して失敗した場合は、rimrafモジュールがローカルnode_modules(既に削除されている場合)に見つからないか、または自身を削除するため、失敗します。

+0

あなたの答えを投稿したとき、私はちょうどその権利について考えました。私はそれを他の開発者にして、コマンドラインに行かずにプロジェクトを起動する必要があるので、インストールをグローバルに実行するnpmスクリプトを作った。私はそれらをすべてグローバルインストールに追加する必要がありますが、私に知らせてくれてありがとう。私はあなたに信用を与えるでしょう。はい、私はそのangular2-webpack-starterの定型文を使用しています。私はASP.net Core 1.0とVisual Studio開発環境用に統合しています。 – TetraDev

関連する問題