yeoman工具的使用以及自定义脚手架

前言

yeoman是一款搭建web应用脚手架工具,可以通过yeoman搭配不同的genrator(项目生成器)去创建任何类型的项目,还可以创建自己的generator来定制脚手架。

脚手架原理(工作过程)

1.通过交互命令询问用户问题
2.根据用户回答生成文件相应的文件结构

yeoman基本使用

1.安装yarn

npm install -g yarn

2.安装yo

sudo yarn global add yo

注意点:

  • yarn 报错超时 unexpected error occurred: “https://registry.yarnpkg.com/yo: ETIMEDOUT”.
    按下面一步步更换yarn地址
npm config set registry https://registry.npm.taobao.org  
npm config set disturl https://npm.taobao.org/dist  
yarn config set sass-binary-site http://npm.taobao.org/mirrors/node-sass

3.安装generator-generator

sudo npm install -g generator-generator

4.在根目录下运行yo generator

yo generator-generator

注意点:
直接运行yo,可以选择不同的项目生成器

yo

不过要在之前先安装项目生成器,例如安装生成vue项目的generator-vue2,可以在npm官网通过搜索“generator-”找到很多生成器

npm install -g generator-vue2

在这里插入图片描述

5.创建项目 test

yo vue2

在这里插入图片描述
生成的项目结构如下:
在这里插入图片描述
yarn link
在这里插入图片描述

自定义generator

generator本质上就是一个npm模块,yeoman的generator必须是以generator-name的格式,如果不采用这种格式,yeoman后续就无法找到所定义的generator

1.创建项目,并切换到该项目

mkdir generator-sample-vue
cd generator-sample-vue

2.yarn(或npm) init初始化项目,生成package.json文件

在这里插入图片描述

3.执行yarn add yeoman-generator

yeoman-generator提供了生成器的一个基类,这个基类中提供了一些工具函数,使生成器创建的时候更加便捷
在这里插入图片描述

4.在项目根目录下面创建generator/app/index.js

写入下面的代码(一定要保存,要不然下一步就会报错):

//主文件路径 generators→app →index.js  内容如下
//此文件作为generator的核心入口,需要导出一个继承yeoman Generator的类型
// yeomanGenerator在工作时会自动调用,我们在此类型中定义的一些生命周期函数方法
//我们在这些方法中可以通过调用父类的一些工具方法,例如文件写入

const Generator = require('yeoman-generator');

module.exports = class extends Generator {
    prompting() { //用户输入输出
     const prompts = [
     //询问用户是否进行某些操作,y/n,可以研究一下别的生成器的操作
         {
             type: 'confirm',
             name: 'someAnswer',
             message: 'Would you like to enable this option?',
             default: true
         }
     ];

     return this.prompt(prompts).then(props => {
         // To access props later use this.props.someAnswer;
         this.props = props;
     });
    }
    writing() {
        this.fs.write(
           this.destinationPath("temp.text"),                            Math.random().toString()
        )
    }
}

5.yarn link 将这个模块链接到全局

在和我们刚创建的generator-sample-vue同一目录下,新建文件my-sample-vue

mkdir my-sample-vue

在这里插入图片描述

6.执行yo sample-vue

yo sample-vue

在这里插入图片描述
执行了刚刚写在generators→app →index.js里的算法Math.random().toString()在这里插入图片描述
这样的话,我们在generator-sample-vue项目里,新建templates文件夹,随便新建一些文件在里面,如下:
在这里插入图片描述
如果my-sample-vue执行yo sample-vue的话,下面的语句会一次将上面的文件写入项目(my-sample-vue)里

templates.forEach(item => {
    this.fs.copyTpl(
        this.templatePath(item),
        this.destinationPath(item)
    )
})

在这里插入图片描述

my-sample-vue的目录如下:
在这里插入图片描述
自定义的generator-sample-vue生成器就这样建好了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值