2017-12-20 16 views
0

パッケージを管理し、スクリプト内にインストールするには、ライブラリがありますか、それともNPM自体に組み込まれていますか?私は、ローカルパッケージが存在するかどうかをチェックし、そうでない場合はインストールするプロセスを作成しています。それから私は同じプロセスで動的にそれを必要としたいと思っています。スクリプトを使用してNPMパッケージを管理する

+0

スーパーマーケットなどでノードの起動をラップしてから、ノードに独自のpackages.jsonを更新させてから再起動をトリガーしてnpm installを呼び出してインストールします+あなたのノードを再起動する前に新しいアップストリームの依存関係を再構築します...エラーの復帰...非常にはっきりしていますが、明らかに非常に脆弱です。開発者のみの生産ではありません。 –

+0

これらの回答の1つが役に立つとわかったら、それを受け入れるべきです。将来の開発者には役立ちます。 – BrassApparatus

答えて

3

これは間違いありませんが、おそらくお勧めできません。

npmモジュール "npm-programmatic"が見つかりました。これによりnpmをインストールできます。一度それをしたら、必要なものが失敗したときに処理できるように、try catchで必要なものをラップするだけです。

const npm = require('npm-programmatic') 

let myPackage 
try { 
    myPackage = require('my-package') 
} catch(err) { 
    npm.install(['my-package']).then(function() { 
     myPackage = require('my-package') 
     console.log(myPackage) 
    }) 
} 

ここで目にする最大の問題は、スクリプトを標準の権限以上に実行する必要があることです。おそらく非常にお勧めできないこのスクリプトをsudoで実行する必要があります。

0

いいえ、あなたの目標を達成する方法はないと思います。実際、それは「悪い」アイデアです。 Node.jsの下で

、我々は常にすべての依存関係を管理するためにpackage.jsonを使用して、我々は彼らを展開するとき、我々は唯一の

$npm install 

を実行するために使用することは非常に簡単かつ効果的であるが、上のベースあなたの心は、require2のようなrequire関数の代わりに新しい関数を書く必要があります。モジュールをロードする際には常にモジュールが存在するかどうかをチェックしますが、それは有効ではありません。

+0

通常、それは悪い考えですが、私たちは閉じた環境でプライベートレポを使用しています。それは私たちのために何かを維持するための快適な方法です。 – ddibiase

関連する問題