运行生成器后,您通常需要运行 npm(或 Yarn)和 Bower 以安装生成器所需的任何其他依赖项。
由于这些任务非常频繁,Yeoman 已经对其进行了抽象。我们还将介绍如何通过其他工具启动安装。
请注意,Yeoman 提供的安装助手会自动安排安装作为 install
队列的一部分运行一次。如果您需要在它们运行后运行任何内容,请使用 end
队列。
npm
您只需调用 this.npmInstall()
即可运行 npm
安装。即使多个生成器多次调用,Yeoman 也会确保 npm install
命令仅运行一次。
例如,您想将 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
命令仅运行一次。
例如,您想将 lodash 安装为开发依赖项
generators.Base.extend({
installingLodash: function() {
this.yarnInstall(['lodash'], { 'dev': true });
}
});
这相当于在命令行中调用
yarn add lodash --dev
在您的项目中。
Bower
您只需调用 this.bowerInstall()
即可启动安装。即使多个生成器多次调用,Yeoman 也会确保 bower install
命令仅运行一次。
组合使用
调用 this.installDependencies()
默认情况下运行 npm 和 bower。您可以通过为每个包管理器传递布尔值来决定使用哪些包管理器。
使用 Yarn 和 Bower 的示例
generators.Base.extend({
install: function () {
this.installDependencies({
npm: false,
bower: true,
yarn: true
});
}
});
使用其他工具
Yeoman 提供了一个抽象层,允许用户 spawn
任何 CLI 命令。此抽象层将规范化为命令,以便它可以在 Linux、Mac 和 Windows 系统上无缝运行。
例如,如果您是 PHP 爱好者并希望运行 composer
,则可以这样编写
class extends Generator {
install() {
this.spawnCommand('composer', ['install']);
}
}
确保在 install
队列中调用 spawnCommand
方法。您的用户不希望等待安装命令完成。