2017-01-16 14 views
0

package.jsonを使用してグローバルパッケージのインストールを保存するにはどうすればよいですか?package.jsonを使ってグローバルパッケージのインストールを保存するには?

私が何か良い解決策を見つけることができませんでしたが、私は以下のようにこれをしなかった:

package.jsonで、私は次のように追加しました:

"scripts": { 
    "preinstall": "npm install babel babel-cli -g" 
}, 

それはすべてインストールする前に、世界的に上記のパッケージを実行してインストールします依存関係とdevDependenciesはpackage.jsonです。

しかし、私が見つけられないという問題は、それらのパッケージがどのマシンにもグローバルにインストールされていることです。

誰かがこれのより良い解決策を持っている場合は、助けてください。

+1

プレインストール時にグローバルパッケージをインストールする正当な理由はありますか? –

+0

しかし、グローバルにインストールすることなく、CLIで実行することはできません。 –

+1

[babel instructions](https://babeljs.io/docs/usage/cli/)_は、globally_をインストールしないことを推奨しています: "あなたのマシンにBabel CLIをグローバルにインストールすることができますが、それはプロジェクトによってローカルにプロジェクトします。 – msanford

答えて

2

強制的にモジュールをグローバルにインストールするのは悪いことです。あなたはdevDependenciesにbabelbabel-cliを入れて、あなたのNPMスクリプトでそれらを使用することができます。

{ 
    "build" : "babel src -d build" 
}, 
"devDependencies": { 
    "babel-cli": "^6.18.0" 
} 
+0

しかし、グローバルにインストールすることなく、CLIで実行することはできません。 –

+1

私の答えのようにnpmスクリプトを使うことができます。 '' babel''の代わりに ''。/ node_modules/.bin/babel''を呼び出すことで可能です。もちろん、それをグローバルにインストールすることもできますが、開発者のグローバル環境を汚染するという制約ではなく、選択肢にする必要があります。 – MatthieuLemoine

+0

@NazmulBasher CLI経由で使用する場合は、binを使用して設定を配線する必要があります。 [このライブラリ](https://github.com/code-and-send/fol)の設定を参照してください。基本的には、そこに示すように 'package.json'に' bin'を設定してください。 – revelt

1

あなたはCLI経由でパッケージを実行するために探しているなら、あなたはbinアプローチを使用して設定する必要があります。

私のライブラリの1つは、たとえばfolです。これは、コマンドライン経由でのみ実行されることを意味します。最も最小限のセットアップで

、あなたはpackage.jsonで次のように追加して、例えば、同じJSファイルにmainbinの両方を配線します:、その後

"main": "./bin/fol.js", 
    "bin": { 
    "fol": "./bin/fol.js" 
    }, 

同じためbinフォルダにファイルを置きますそれが/bin/であれば、誰もがそれがCLIアプリケーションであると認識します。

関連する問題