私は、Windows 10上で、次のNPMスクリプトを設定しようとしている(のgit bashの、MINGW使用)NPMスクリプトでブレイク:私package.jsonにscripts
からNPMスクリプトの時計を使用してCLIに動作しますが、
スニペットを:npm i --save-dev node-sass postcss autoprefixer cssnano watch
を実行した後
...
"sass:build": "cat assets/styles/* | node-sass | postcss --no-map -u autoprefixer -u cssnano > dist/public/styles/styles.css.min",
"sass:watch": "watch sass:build ./assets/styles/",
...
私はこのエラーを取得する:
$ npm run sass:watch
> [email protected] sass:watch C:\repos\thenewells
> watch sass:build ./assets/styles/>Watching ./assets/styles/
The filename, directory name, or volume label syntax is incorrect.
しかし、私はをすればNPMスクリプトのバージョンエラーしながら、ディレクトリを検索しようとしたときは、この問題が発生した...
$ watch 'npm run sass:build' ./assets/styles/
> Watching ./assets/styles/
> [email protected] sass:build C:\repos\thenewells
> cat assets/styles/* | node-sass | postcss --no-map -u autoprefixer -u cssnano > dist/public/styles/styles.css.min√ Finished stdin (373ms)
はなぜ、プレーンなCLIのバージョンに動作しますか?
私はまた、 'npm run sass:build'をsass:watchタスクに入れてみました。同じ効果。私はお尻を実行することができます:npm run sass:build
を介してビルドし、それが動作します。
回避策
私はwatchコマンドを実行するbashスクリプトを定義することができるよ、それが動作します。
SASS-見(ファイル拡張子なし、UNIX形式)
watch 'npm run sass:build' ./assets/styles/
そして今SASS:の仕事を見ては、ちょうどbash ./sass-watch
することができます。
これは問題なく動作します。だから私はおそらくより複雑なスクリプトチェーンでそれを連鎖させることができますので、私はnpm run dev
を働かせることができますが、私はむしろそのような奇妙なユースケースのためにスクリプトでスクリプトをラッピングする必要はありません。 sass:watch
で書いたものが元々うまくいくはずです:\
WindowsをインストールしてUbuntuをインストールする別の理由は...?あるいは、npmは環境に何かをさせて、watchコマンドが何か他のものを期待するようにしますか?引用符を使用してコマンドを取り巻く
これは私にbashスクリプトなしの正しい結果を与えました。なぜこれが機能するのか説明できますか? '' ''でコマンドを囲むのは機能しません。あなたの答えはあまり説明的ではなく、短期的には役立ちますが、規範的なものですが、私は(つまり、たくさんのnpmスクリプトを書くつもりで、ツールの理解を得たいと思っています。 ありがとうございました! –
@SeanNewell私はいくつかの説明で私の答えを更新しました –
ありがとう! 何らかの理由で、npmが起動したときにスクリプトがパスに追加されたと思っていました。 #違う –