2016-01-22 12 views
13

Webアプリケーションのさまざまなビルドタスクを実行するためにnpmを試してみたいと思います。私はそうのように私のpackage.jsonscriptsフィールドを追加することによってこれを行うことができます知っている:あなたはオプションの束と、より複雑なコマンドを持っているときnpmを使ってbashスクリプトを実行する

"scripts": { 
    "build": "some build command" 
}, 

は、これが手に負えなくなります。これらのコマンドをbashスクリプトなどの行に沿って移動することは可能ですか?以下のような何か:

npm run buildbuild.shファイル内のコマンドを実行します
"scripts": { 
    "build": "build.sh" 
}, 

投稿はthis投稿されているようですが、正確には私のbuild.shファイルを削除するはずです。

+7

これを行わないでください。ノードはどこでも動作します。 Bashはそうではありません。 bashで何をしているのかはノード**で**できますし、CLIの呼び出しもパッケージの依存関係を使って行うことができます。 'rm'が必要ですか? rimrafをインストールし、[npmスクリプト](http://www.slideshare.net/k88hudson/advanced-frontend-automation-with-npm-scripts)で使用してください。 'mkdir -p'? 'mkdirp'をインストールし、それをnpmスクリプトで使用してください。あなたは*プラットフォームに依存しない汎用のスクリプト言語*を持っています。コマンドラインが複雑すぎるのですか? 'grunt'や' gulp'のようなタスクランナーを使用してください。それを普遍的に保つ。 –

+1

「パッケージの依存関係を使用してCLIの呼び出しを行うことができる」と言えば、[this](http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool -with-npm)? –

+0

閉じるが、いいえ、リンク先のスライドを読んでください。 'grunt'や' gulp'や 'mkdirp'などのCLIツールが付属しているノードモジュールをインストールして、グローバルにインストールする必要がなく、グローバルにインストールされているかのように呼び出す* npmスクリプトの '' build ''のように: "mkdirp build && lessスタイル/ index.less> static/css/style.css && webpack" '。あなたが起動したコマンドがnpmで管理されている(つまり、package.json依存関係のリストにある)限り、これはうまく動作します。 「これは1つのOSでのみ動作する」コマンドでは、同じことを普遍的に行うノードモジュールを使用します。 –

答えて

23

そのを完全に可能...

"scripts": { 
    "build": "./build.sh" 
}, 

、あなたが#!/usr/bin/env bash

は必ずファイルを実行する権限があることを確認してくださいあなたのbashファイルの先頭にハッシュ強打を置くことを確認してください

chmod +x ./build.sh 
+0

bashファイルはどこに行きますか?それはnode_modulesの 'bin'ディレクトリにある必要がありますか? –

+1

あなたが望む場所に置くことができるのは、相対パスをpackage.jsonに入れることです。例えば、 "build": "./path/to/my/awesome/build/file/build.sh" ' – eblahm

+0

は何ですか。前に?それは単に "ビルド"ではないのです: "./build.sh"? –

関連する問題