[解決済み] Node.jsで動作するjavascriptからNPMパッケージをインストールすることはできますか?
質問
Node.js で実行されている javascript ファイルから NPM パッケージをインストールできますか。 例えば、あるスクリプト (これを "script.js" と呼ぶことにします) が、何らかの方法で (NPM を使用して、または使用しないで...) 通常 NPM を通じて利用可能なパッケージをインストールするようにしたいと思います。 この例では、"FFI" をインストールしたいと思います。 (npm install ffi)
解決方法は?
確かに npm をプログラムで使用することは可能であり、ドキュメントの古いリビジョンで概説されていました。これはその後、公式のドキュメントから削除されましたが、ソース管理上ではまだ以下のような記述で存在しています。
npm はプログラムで使用することができますが、その API は CLI での使用のみを意図しています。 CLI での使用のみを意図しており、他のいかなる目的への適合性も保証されていません。 他の目的への適合性は保証されません。npmを使って何らかの作業を確実に行いたい場合。 最も安全な方法は、適切な引数で目的のnpmコマンドを呼び出すことです。 を適切な引数で呼び出すことです。
npmのセマンティックバージョンは、基礎となるAPIではなく、CLIそのものを参照しています。 を参照しています。 内部APIは安定性を保つことが保証されていません。 npm のバージョンが、壊れるような変更がなされていないことを示すときでも セマンティックバージョンによると .
オリジナルのドキュメントでは、以下のようなコードサンプルが提供されていました。
var npm = require('npm')
npm.load(myConfigObject, function (er) {
if (er) return handlError(er)
npm.commands.install(['some', 'args'], function (er, data) {
if (er) return commandFailed(er)
// command succeeded, and data might have some info
})
npm.registry.log.on('log', function (message) { ... })
})
以降
npm
は
node_modules
フォルダにある場合は
require('npm')
を使って他のモジュールと同様に読み込むことができます。モジュールをインストールするために
npm.commands.install()
.
もしソースを見る必要があるなら、それは
GitHub
. 以下は、このコードの完全な動作例で、次のように実行します。
npm install
をコマンドライン引数なしで実行するのと同じです。
var npm = require('npm');
npm.load(function(err) {
// handle errors
// install module ffi
npm.commands.install(['ffi'], function(er, data) {
// log errors or data
});
npm.on('log', function(message) {
// log installation progress
console.log(message);
});
});
install 関数の最初の引数は配列であることに注意してください。配列の各要素は npm がインストールしようとするモジュールです。
より高度な使い方は
npm-cli.js
ファイルを参照してください。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] jQueryを使用しない$(document).ready相当
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定したディレクトリにnpmインストールする方法は?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法