16

node.js スクリプトに必要なモジュールを自動的にダウンロードできますか? node.js スクリプト (以下のような) に必要なモジュールのリストを生成し、手動で 1 つずつ (npm を使用して) インストールする代わりに、それらを自動的にインストールすることが可能かどうか疑問に思っています。

#!/usr/bin/env node

var DNode = require('dnode');
var sys = require('sys');
var fs = require('fs');
var http = require('http');

var html = fs.readFileSync(__dirname + '/web.html');
var js = require('dnode/web').source();

//the rest of this script is omitted.
4

4 に答える 4

18

はい、まさにこれのための NPM と呼ばれる優れたコードがあります: https://npmjs.org/

package.jsonファイルで依存パッケージを指定し(構文についてはドキュメントnpm install .を参照)、使用してそれらを一度にすべて取り込み、次にrequireスクリプトから取り込むことができます。

Package.json 構文ページ: https://docs.npmjs.com/getting-started/using-a-package.json

モジュールを初めてインストールするときは、インストールするモジュールをいくつでも指定でき、--save引数を追加して自動的にモジュールをpackage.json

npm i --save dnode request bluebird

次回、誰かがnpm iそれを実行すると、指定されたすべてのモジュールが自動的にインストールされますpackage.json

于 2013-01-08T23:54:18.390 に答える
5

このためのスクリプトを作成しました。
スクリプトの先頭に配置すると、実行時にアンインストールされたモジュールがインストールされます。

(function () {
  var r = require
  require = function (n) {
    try {
      return r(n)
    } catch (e) {
      console.log(`Module "${n}" was not found and will be installed`)
      r('child_process').exec(`npm i ${n}`, function (err, body) {
        if (err) {
          console.log(`Module "${n}" could not be installed. Try again or install manually`)
          console.log(body)
          exit(1)
        } else {
          console.log(`Module "${n}" was installed. Will try to require again`)
          try{
            return r(n)
          } catch (e) {
            console.log(`Module "${n}" could not be required. Please restart the app`)
            console.log(e)
            exit(1)
          }
        }
      })
    }
  }
})()
于 2014-02-03T10:37:06.240 に答える