2012-12-13 8 views
10

package.jsonファイル内のscriptsセクションを使用して、定期的に実行する必要のあるコマンドを保存しています。すべてのコマンドでnpm:プロジェクトフォルダ内のどこからでもpackage.jsonからスクリプトを実行する

"scripts": { 
    "test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html", 
    "rjs": "r.js -o ./js/app.build.js", 
    "less": "lessc -x ./css/app.less > ./css/app.css" 
    } 

私はパスの先頭に./を持っている - 私はプロジェクトのルートディレクトリからnpm run-script rjsを呼び出すことができる理由です。 は、package.json内のプロジェクトのルートディレクトリを参照する方法です。私のプロジェクトのどこからでもnpm test

答えて

0

実行されるシェルファイルを作成すると考えられますか?例えば

.SHファイルを作成します(chmodの777 file.sh)それが実行可能に

してからnodejsプロジェクトのルートにcd、NPMコマンドを実行し、次にCDバックあなただけ残っているディレクトリに?ご使用の環境にスクリプトを追加し

は、どこにでも...

は、あるいはハード大丈夫フルパスをコーディングしますから、それが実行可能になりますか? (./- put/home/user/username/yourproject/phantomjsを使用するのではなく)

+0

、あなたのNPMコマンドを実行前に、最後にあなたのプロジェクトへのパスでグローバルフラグを設定して、フラグ設定 例えば 輸出MY_NODE_JS_PROJECT = /ホーム/ユーザー/ユーザー名/ yourproject と、あなたのパッケージで.jsonは "MY_NODE_JS_PROJECT/test/phantomjs ..."のようなものを持っています –

+0

ファイルはgitリポジトリにコミットされ、他の人も同様に使用されるため、フルパスをハードコードすることはできません。これは、あなたが説明した最初の事例の場合もそうです:( – pkyeck

0

シェルスクリプトの代わりにjsスクリプトを作成する方が良い方法が見つけました。私の経験からnpmで対処する方が簡単なようです。コマンドを実行する前にどの環境にいるかを確認できます。私たちには窓、Mac、ubuntuの両方を持つ人がいて、環境をチェックしたり、fsパッケージを使うことで人生が楽になります。

+6

サンプルスクリプトを共有できればいいでしょうか?ありがとう。 – pkyeck

2

私はあなたのプロジェクトを整理する方法によって異なると思います。

サンプルプロジェクトを作成しました。これは私のサンプルプロジェクトのディレクトリツリーです:

. 
├── dir1 
│   └── dir2 
├── package.json 
├── src 
│   └── index.js 
└── test 
    └── test.js 

注:./dir1/dir2はデモ用のちょうど2つの空のディレクトリです。

package.jsonファイルには、次のようになります。スクリプトのセクションの

{ 
    "name": "sample", 
    "version": "1.0.0", 
    "description": "sample", 
    "main": "index.js", 
    "scripts": { 
    "test": "node test/test.js", 
    "start": "node src/index.js" 
    }, 
    "author": "yaniv", 
    "license": "ISC" 
} 

焦点は、それらは私の場所についての考慮せずに、2つの単純なラインです。私は/dir1/dir2にディレクトリを変更し、npm testを実行し、私はtestプロパティに書いたスクリプトが./を使用せずに適切に実行された場合

(カレントディレクトリを定義します...)

ボトムライン - 私が思いますプロジェクトを再編成して./を削除すると、あなたの場合は仕事ができます。

関連する問題