ジェネレーターを実行すると、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
キュー内で呼び出してください。ユーザーはインストールコマンドの完了を待ちたくありません。