最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 用Yeoman搭建我自己的项目脚手架

    正文概述 掘金(有刃有鱼阮小六)   2021-02-22   685

    新建一个项目,通常需要进行各种配置,比如webpack配置、eslint配置、各种通用库的安装和配置等等,如果每次新建都要重新搞一遍会比较麻烦,因此搭建一个自己常用的项目脚手架便很有必要。

    就像vue-cli一样,一个vue create my_project命令就可以生成项目结构,并内置了webpack等相关基础配置,开箱即用,美滋滋。

    下面介绍我如何使用Yeoman工具来搭建自己的项目脚手架。

    一、安装

    npm install -g yo
    npm install -g generator-generator
    

    全局安装yo,使用yo命令来执行脚手架yo <name>,脚手架项目的名称是generator-打头,用yo执行的时候不带generator-打头。如generator-jeyson脚手架项目,执行就是yo jeyson

    全局安装创建脚手架生成项目generator-generator,通过yo generator可生成构建脚手架的项目。

    二、使用

    1、使用yo命令执行generator脚手架,生成构建脚手架的项目

    yo generator
    
    # 弹出配置问题
    # Your generator name (generator-my-projects) 脚手架名称,如:generator-jeyson-koa
    # Description 描述,如:this is a jeyson's koa project
    # Project homepage url 项目地址,如项目的github地址,没有可以留空
    # Author's Name 作者名,jeyson
    # Author's Email 作者邮箱,123@163.com
    # Author's Homepage 作者首页,ljclucky.com
    # Package keywords (comma to split) 包关键字,逗号分隔 koa,webpack,mongoose,redis
    # Send coverage reports to coveralls 是否发送报告 Y
    # Enter Node versions (comma separated) node版本 12.14
    # GitHub username or organization
    # Which license do you want to use?  协议,MIT
    

    配置完成后在当前目录下生成项目结构:

    用Yeoman搭建我自己的项目脚手架

    其中最核心的就是generators文件夹。

    • generators/app/templates 里面用于存放我的项目模板文件。

    • generators/app/index.js 脚手架项目的入口文件,里面会触发一些生命周期:

      1. initializing - 初始化方法(检查当前项目状态、获取配置等)
      2. prompting - 提示用户输入选项的地方
      3. configuring - 保存配置(创建.editorconfig文件和其他元数据文件)
      4. default - 如果方法名称与优先级不匹配,则会将其推送到该组
      5. writing - 执行文件写操作,即项目文件写入文件系统中
      6. conflicts - 处理冲突的地方(内部使用)
      7. install - 运行安装的位置(npm、bower)
      8. end - 最后执行,可清除临时文件

    2、将自己的项目复制到模板文件下

    generators/app/templates目录下的dummyfile.text文件删除。

    然后把自己的项目中除了dist、node_modules文件夹外所有工程文件复制到generators/app/templates目录下,如我的koa项目:

    用Yeoman搭建我自己的项目脚手架

    3、配置generator入口文件

    具体可查看文档generator部分,完整api

    在文件修改配置:

    'use strict';
    const Generator = require('yeoman-generator');
    const chalk = require('chalk');
    const yosay = require('yosay');
    
    module.exports = class extends Generator {
      // 用脚手架生成自己的项目的时候提示信息
      prompting() {
        this.log(
          yosay(`Welcome to the kryptonian ${chalk.red('generator-jeyson-koa')} generator!`)
        );
    
        const prompts = [
          {
            type: 'confirm', // 确认类型,[Y/n]
            name: 'someAnswer', // 提示名称
            message: 'Would you like to enable this option?', // 提示文字
            default: true // 默认值
          },
       // {
         // type: 'input', // 输入类型
         // name: 'author',
         // message: '请输入项目作者',
         // default: ''
       // }
        ];
    
        return this.prompt(prompts).then(props => {
          this.props = props;
        });
      }
    
      writing() {
        this.fs.copy(
          // this.templatePath('dummyfile.txt'),
          // this.destinationPath('dummyfile.txt')
          // 将上面的修改成下面这样,意思是在执行脚手架生成的时候
          // 将templates模版下的所有文件复制到当前路径下
          // 具体可查看文档 https://yeoman.github.io/generator/actions_fs.html#.copyTemplate
          this.templatePath('**'),
          this.destinationPath('./'),
          {
            globOptions: {
              dot: true, // 意为匹配带.的文件
              nodir: true // 注:该选项意为不匹配空目录,强制为true,可以不写
            }
          }
        );
      }
    
      install() {
        // npm安装所有依赖
        this.npmInstall();
      }
    };
    

    三、发布

    上述都配置完成后,即可进行发布了。

    1、正式发布之前,先在本地进行测试

    确认我们的命令行处在当前的脚手架项目目录下,然后输入命令:

    npm link
    # 如果要解除 用 npm unlink
    

    该命令可以把我们当前所在的脚手架项目链接到全局node_modules中,然后我们新建一个文件夹demo,进入该目录,输入下面的命令:

    yo jeyson-koa
    # yo your-project 即上面设置的脚手架名称,不带前面的generator-
    

    执行该命令,它会从全局的node_modules中找到之前链接的脚手架项目,然后在当前demo路径下,执行该项目,即可生成你的项目。

    用Yeoman搭建我自己的项目脚手架

    运行项目,测试是否正常运行。

    2、将项目脚手架发布到npm仓库中

    本地测试完成之后,就可以发布到npm线上仓库中了。

    首先要注册有npm账号,然后在命令行中登陆:

    npm login
    

    然后进入到脚手架项目中,使用命令:

    npm publish
    

    注:在发布之前,需要确认脚手架项目package.json中的version要给个1.0.0以上的版本。

    发布成功后,即可在npm官网上搜索到这个包,这样在任何地方都能下载和使用该脚手架了,如:

    # 全局安装脚手架项目
    npm install -g generator-jeyson-koa
    # 通过yo命令运行脚手架
    yo jeyson-koa
    

    起源地下载网 » 用Yeoman搭建我自己的项目脚手架

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元