ジェネレーターを実行すると、npm (または Yarn) および Bower を実行して、ジェネレーターに必要な追加の依存関係をインストールすることがよく求められます。
これらのタスクは非常に頻繁に発生するため、Yeoman はそれらをすでに抽象化しています。他のツールを使用してインストールを起動する方法も説明します。
Yeoman によって提供されるインストールヘルパーは、自動的に install キューの一部として、インストールが 1 回実行されるようにスケジュールすることに注意してください。インストール後に何かを実行する必要がある場合は、 end キューを使用します。
npm
npm インストールを実行するには、 this.npmInstall() を呼び出す必要があります。Yeoman は、 npm install コマンドが複数のジェネレーターによって何度も呼び出された場合でも、1 回だけ実行されることを保証します。
たとえば、lodash を開発依存関係としてインストールする場合
class extends Generator {
  installingLodash() {
    this.npmInstall(['lodash'], { 'save-dev': true });
  }
}
これと等価な呼び出しは次のとおりです。
npm install lodash --save-dev
プロジェクトのコマンドラインで。
npm 依存関係のプログラムによる管理
テンプレートを使用しない場合でも、依存関係のバージョンを固定したい場合は、 package.json ファイルをプログラムで作成または拡張できます。Yeoman のファイルシステムツールを使用すると、このジョブを実行できます。
eslint を開発依存関係として、 react を依存関係として定義する例
class extends Generator {
  writing() {
    const pkgJson = {
      devDependencies: {
        eslint: '^3.15.0'
      },
      dependencies: {
        react: '^16.2.0'
      }
    };
    // Extend or create package.json file in destination path
    this.fs.extendJSON(this.destinationPath('package.json'), pkgJson);
  }
  install() {
    this.npmInstall();
  }
};
Yarn
インストールを起動するには、 this.yarnInstall() を呼び出す必要があります。Yeoman は、 yarn install コマンドが複数のジェネレーターによって何度も呼び出された場合でも、1 回だけ実行されることを保証します。
たとえば、lodash を開発依存関係としてインストールする場合
generators.Base.extend({
  installingLodash: function() {
    this.yarnInstall(['lodash'], { 'dev': true });
  }
});
これと等価な呼び出しは次のとおりです。
yarn add lodash --dev
プロジェクトのコマンドラインで。
Bower
インストールを起動するには、 this.bowerInstall() を呼び出す必要があります。Yeoman は、 bower install コマンドが複数のジェネレーターによって何度も呼び出された場合でも、1 回だけ実行されることを保証します。
複合的な使用方法
this.installDependencies() を呼び出すと、デフォルトで npm と bower が実行されます。各パッケージマネージャーにブーリアンを渡すことで、使用するものを決めることができます。
Yarn を Bower と一緒に使用するための例
generators.Base.extend({
  install: function () {
    this.installDependencies({
      npm: false,
      bower: true,
      yarn: true
    });
  }
});
他のツールを使用する
Yeoman は、ユーザーが任意の CLI コマンドを spawn できるようにするための抽象化を提供します。この抽象化は、コマンドを正規化するため、Linux、Mac、Windows システムでシームレスに実行できます。
たとえば、PHP 愛好家で composer を実行したい場合は、次のように記述します。
class extends Generator {
  install() {
    this.spawnCommand('composer', ['install']);
  }
}
spawnCommand メソッドを install キュー内で呼び出してください。ユーザーはインストールコマンドの完了を待ちたくありません。
