Yeoman,搭建、发布自己的脚手架

一、为什么要构建自己的脚手架

        大家都知道,使用脚手架能够帮助我们快速构建项目,目前网上也有很多脚手架,能够满足大家的基本需求。最近,自己研究了一些新的东西,在网上找了许多都不能满足我。所以今天我就使用Yeoman自己搭建一个脚手架,同时发布到npm  仓库里。下次在起新的项目时便可快速搭建了。

二、构建脚手架详细步骤

1、安装必备工具

a、安装node

          首先确定你安装了node和npm,node的版本要求在4.0以上,通过  node -v 和 npm  -v 可查看当前node、npm的版本。node版本若太低,可通过 n 模块进行管理:

npm  install-g n  // 安装n 模块

n stable  //升级node.js到最新稳定版

n v8.6.0  //n后面也可以跟随版本号

有些可能需要加sodo  才有权限安装

b、安装 yeoman

sudo npm install -g yo  //安装 yeoman

yo --version  //查看版本

2、创建属于自己的generator

a、创建文件目录

创建文件夹目录,文件夹名必须为generator-namename是你创建的generator的名字。再次以generator-lazy-gift 为例。

注:文件夹名称必须以generator- 为前缀,否则执行 yo xxx  初始化项目时会无法找到你的项目模块。

b、修改package.json

执行 npm init  创建 package.json。完成后添加以下项,然后通过 npm  i  安装项目依赖项。

"files":[

       "app"

],

"keywords":[

       "yeoman-generator"

],

"dependencies":{

        "chalk":"^2.1.0",

        "yeoman-generator":"^2.0.1",

        "yosay":"^2.0.1"

}

注:files 名称需和项目目录文件名一致,比如这里的app,项目初始化时便能找到app 下的内容;keywords 也必须为yeoman-generator。

c、目录规范



d、编写index.js

在app  目录下新建index.js ,编辑内容如下:


在此,我的编辑内容如下:

'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 prime '+ chalk.red('generator-lazy-gift') +' generator!'

          ));

          const prompts = [{

                    type:'input',

                    name:'appName',

                    message:'What is your project name ?',

                    default:"lazy-gift"

          }];

          return this.prompt(prompts).then(props => {

                    this.props= props;

          });

}

writing() {

        this.fs.copy(

                 this.templatePath('lazy-gift-server/'),

                 this.destinationPath('lazy-gift-server/')

      );

     this.fs.copy(

               this.templatePath('lazy-gift-ui/'),

               this.destinationPath('lazy-gift-ui/')

    );

     this.fs.copy(

              this.templatePath('.babelrc'),

              this.destinationPath('.babelrc')

     );

 }

};

e、软连接项目模块

npm link

将generator-gulp软连接到你的usr/local/lib/node_modules/generator-gulp,这样运行yo时,就可以找到这个generator-gulp了。

f、测试

新建项目文件,打开终端,执行yo,可以看到:


至此,你就成功搭建了属于自己的脚手架了。


三、发布模块到NPM

1、npm 注册

npm adduser  

npm login

npm whoami  //查看当前 npm 用户

2、npm module 发布

进入项目根目录,执行

npm publish

这里有时候会遇到几个问题,问题1:

npm ERR! no_perms Private mode enable, only admin can publish this module:

这是因为国内网络问题,许多小伙伴把npm的镜像代理到淘宝或者别的地方了,这里要设置回原来的镜像。

npm config setregistry=http://registry.npmjs.org

问题2:

npm ERR! you do not have permission to publish "your module name".Are you log gedinas the correctuser?

提示没有权限,是因为你的module名在npm上已经被占用啦,这时候你就去需要去npm搜索你的模块名称,如果搜索不到,就可以用,并且把package.json里的name修改过来,重新npm publish.

更新版本,在项目根木下的 package.json 修改版本,然后再发布:

{

       "name":"generator-lazy-gift",

       "version":"1.0.2",    // 修改版本号为1.0.2

       "description":"My generator",

        "files":[

                "app"

         ],

        "main":"index.js",

        "scripts":{

              "test":"echo\"Error: no test specified\"&& exit 1"

        },

        "keywords":[

               "yeoman-generator"

         ],

       "author":"sulihua",

         "license":"ISC",

          "dependencies":{

          "chalk":"^2.3.0",

         "yeoman-generator":"^2.0.1",

          "yosay":"^2.0.1"

},

       "devDependencies":{}

}

版本号规范采用的是  semver ,具体的可以参看文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容