运行Generator时,经常需要运行npm(或yarn)和Bower来安装项目需要的附加依赖。
这些任务非常频繁,因此Yeoman已经将它们抽象化了。 我们还将介绍如何通过其他工具启动安装。
请注意,Yeoman提供的安装助手(Installation Helper)将作为安装队列的一部分,自动安装运行一次。 如果它们在运行后需要运行一些程序,请使用结束队列。
6.1 npm
您只需要调用this.npmInstall() 即可运行npm安装。 Yeoman将确保npm install命令仅被运行一次,即使它被多个Generator多次调用也是如此。
例如,想将lodash安装为dev依赖项:
class extends Generator {
installingLodash() {
this.npmInstall(['lodash'], { 'save-dev': true });
}
}
等价于调用:
npm install lodash --save-dev
程序化管理npm依赖
如果不想使用模板,但希望使用固定版本的依赖项,则可以通过编程方式创建或扩展package.json文件。 Yeomans文件系统工具可以完成这项工作。
将eslint定义为dev依赖项并作为依赖项进行响应的示例:
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();
}
};
6.2 Yarn
您只需要调用this.yarnInstall() 即可启动安装。 Yeoman将确保yarn install命令仅被运行一次,即使它被多个生成器多次调用也是如此。
安装lodash:
generators.Base.extend({
installingLodash: function() {
this.yarnInstall(['lodash'], { 'dev': true });
}
});
等价于:
yarn add lodash --dev
6.3 Bower
您只需要调用this.bowerInstall()即可启动安装。 Yeoman将确保bower install命令仅被运行一次,即使它被多个生成器多次调用也是如此。
6.4 混合使用
调用this.installDependencies() 会默认运行npm和bower。 您可以通过为每个程序包管理器传递布尔值来确定要使用的参数。
例如在Bower中使用Yarn:
generators.Base.extend({
install: function () {
this.installDependencies({
npm: false,
bower: true,
yarn: true
});
}
});
6.5 使用其它工具
Yeoman提供了一种抽象,允许用户生成任何CLI命令。 这种抽象将规范化为命令,因此可以在Linux,Mac和Windows系统中无缝运行。
例如,如果对于PHP来说,可以这样编写:
class extends Generator {
install() {
this.spawnCommand('composer', ['install']);
}
}
确保在安装队列中调用spawnCommand方法。用户不想等待安装命令完成。
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 |
本文介绍如何使用Yeoman简化npm、Yarn和Bower等工具的依赖管理。通过Yeoman提供的API,开发者能够轻松地安装和管理项目的依赖项,并且支持程序化地管理package.json文件。
665

被折叠的 条评论
为什么被折叠?



