yeoman学习

基本结构

一.安装
yarn global add yo
yarn global add generator-node
二.创建自己的Generator

1.mkdir generator-clover-vue
2.cd generator-clover-vue
3.yarn init / npm init
4.yarn add yeoman-generator
generator-clover-vue目录下创建generators/app/index.js
// 此文件作为 Generator 的核心入口
// 需要导出一个继承自 Yeoman Generator 的类型
// Yeoman Generator 在工作时会自动调用我们在此类型中定 义的一些生命周期方法
// 我们在这些方法中可以通过调用父类提供的一些工具方法实现一些功能,例如文件写入
模板文件放入=》generators/app/templates中
5.yarn link/ npm link 链接到全局模块包,这样yooman在工作时候就可以找到我们自己写的generator
6.yo clover-vue(link到全局,后面需要安装的地方直接yarn link 加上名字)

//index.js
const Generator = require('yeoman-generator')
 
module.exports = class extends Generator{
    prompting() {
        return this.prompt([
            {
                type: 'input',
                name: 'name',
                message: 'Your Project name',
                default: this.appname
            }
        ]).then(answers => {
           this.answers = answers
       })
    }

    writing() {
         // 把每一个文件都通过模板转换到目标路径
        const templates = [
            '.browserslistrc',
            '.editorconfig',
            '.env.development',
            '.env.production',
            '.eslintrc.js',
            '.gitignore',
            'babel.config.js',
            'package.json',
            'postcss.config.js',
            'README.md',
            'public/favicon.ico',
            'public/index.html',
            'src/App.vue',
            'src/main.js',
            'src/routers/router.js',
            'src/assets/logo.png',
            'src/components/HelloWorld.vue',
            'src/store/actions.js',
            'src/store/getters.js',
            'src/store/index.js',
            'src/store/mutations.js',
            'src/store/state.js',
            'src/utils/request.js',
            'src/views/About.vue',
            'src/views/Home.vue'
        ]

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

举例templates里面文件

三.根据模板创建文件

1.app/templates/foo.txt
通过模板方式写入文件到目标目录

这是一个模板文件
内部可以使用 EJS 模板标记输出数据
例如:<%= title %>
其他的 EJS 语法也支持
<% if (success) { %>
哈哈哈
<% }%>

创建一个generator-vlover-vue,yarn link注册好后,后面yo clover-vue直接在想生成脚手架的文件下运行,就可以生成基本框架
my-vue自己生成的文件夹

最后再来一张生成文件目录,和上面templates里面一致
在index.js中定义的模板name,可以在一些地方用比如README.md中写入<%= name%>

四.发布 Generator

图后面要git commit -m “first clover-vue-cli”,截图没截到
git commit -m "first clover-vue-cli"

做完图上的操作,接着
①去git创建一个本地仓库,名字就叫# generator-clover-vue
②接着继续命令行 git remote add origin https://github.com/cloveryuan/generator-clover-vue.git
③ git push -u origin master
④npm publish --registry http://registry.npmjs.org//改镜像
接着一系列报错,一一解决比如邮箱认证的, “private”: false,

成功了

上npm查到了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值