新建一个项目,通常需要进行各种配置,比如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
配置完成后在当前目录下生成项目结构:
其中最核心的就是generators
文件夹。
-
generators/app/templates
里面用于存放我的项目模板文件。 -
generators/app/index.js
脚手架项目的入口文件,里面会触发一些生命周期:initializing
- 初始化方法(检查当前项目状态、获取配置等)prompting
- 提示用户输入选项的地方configuring
- 保存配置(创建.editorconfig文件和其他元数据文件)default
- 如果方法名称与优先级不匹配,则会将其推送到该组writing
- 执行文件写操作,即项目文件写入文件系统中conflicts
- 处理冲突的地方(内部使用)install
- 运行安装的位置(npm、bower)end
- 最后执行,可清除临时文件
2、将自己的项目复制到模板文件下
将generators/app/templates
目录下的dummyfile.text文件删除。
然后把自己的项目中除了dist、node_modules文件夹外所有工程文件复制到generators/app/templates
目录下,如我的koa项目:
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路径下,执行该项目,即可生成你的项目。
运行项目,测试是否正常运行。
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
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!