6、Yeoman 管理依赖

本文介绍如何使用Yeoman简化npm、Yarn和Bower等工具的依赖管理。通过Yeoman提供的API,开发者能够轻松地安装和管理项目的依赖项,并且支持程序化地管理package.json文件。

运行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方法。用户不想等待安装命令完成。

 

Yeoman系列

1

入门

2

创建Generator

3

Generator运行时上下文(Runtime Context)

4

用户交互

5

可组合性

6

管理依赖

7

使用文件系统

8

管理配置

9

单元测试

10

调试Generator

11

整合Yeoman

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值