使用yeoman搭建脚手架并发布到npm
前言
最近主要在写前端的模板类项目,由于其中的webpack配置和引进数据注入ejs模板的方法大同小异,所以萌发出把该模板框架提取出来作为一个常用的脚手架,也方便以后同事可以进行复用。
之前在看《前端工程化:体系设计与实践》里面有提到过Yeoman构建脚手架,先入为主,所以就用了Yeoman来搭建自己的脚手架
准备
1,node环境
在终端上运行node -v
,如果显示node版本号,说明已有node环境
2,安装Yeoman工具集
npm install --global yo
验证是否已经安装
yo --version
创建一个脚手架的基础框架
1,新建一个文件夹,以generator-name命名,其中name是创建的generator的名字。
npm init 初始化项目,在package.json中增加:
// files 名称需和项目目录文件名一致,比如这里的app,项目初始化时便能找到app 下的内容
"files": [
"app"
],
"keywords": [
"yeoman-generator"
],
和依赖项
"dependencies": {
"chalk": "^2.4.2",
"glob": "^7.1.3",
"lodash": "^4.17.11",
"yeoman-generator": "^3.2.0"
}
2,新建app文件夹,并新建index.js文件
// 引进yeoman-generator
let Generator = require('yeoman-generator');
module.exports = class extends Generator {
// 安装脚手架时的提问信息
prompting(){
var questions = [
{
type: 'input',
name: 'projectName',
message: '输入项目名称',
default: this.appname
},
{
type: 'input',
name: 'projectAuthor',
message: '项目开发者',
store: true,
default: ''
},{
type: 'input',
name: 'projectVersion',
message: '项目版本号',
default: '0.0.1'
}
]
return this.prompt(questions).then(
function(answers){
for(var item in answers){
answers.hasOwnProperty(item) && (this[item] = answers[item]);
}
}.bind(this));
}
writing(){
// 安装脚手架时复制的内容块的目录
this.fs.copy(
this.templatePath('module/'),
this.destinationPath('')
);
}
}
3,新建templates文件,并把index.js提到的复制内容块的目录下放着你自己的脚手架内容
目录如下:(其中module为你的整个脚手架内容)
连接项目
npm link
验证
新建新的项目workpalce,执行yo,如果看到Cms Module说明搭建脚手架成功~
发布到npm上
1,npm注册
在npm上进行注册
2,登录
在控制台上执行npm login,可以看到:
3,发布
在generator-name项目于根目录下执行npm public
发布到npm上
注意:每次进行修改后上传都需要在package.json上修改版本
一般来说,版本分成三部门:a.b.c
- a表示大版本号,一般是项目较大改动的时候修改,a为0的时候,表示项目处于开发阶段。
- b表示功能更新,或者项目模块改动的时候增加。
- c表示小改动,如修bug。
下载npm上的脚手架
1,确保你本地安装了yo
yo --version
2,下载
执行npm install -g generator-cms-module
就可以把脚手架放在你自己的yo上
3,引用
在项目上运行yo
,会出现可以看到Cms Module的个人generator,选择并按提示输入信息就可以把该脚手架的代码create到项目里
使用yeoman搭建脚手架并发布到npm的更多相关文章
- 基于vue的脚手架开发与发布到npm仓库
什么是脚手架 在项目比较多而且杂的环境下,有时候我们想统一一下各个项目技术栈或者一些插件/组件的封装习惯,但是每次从零开发一个新项目的时候,总是会重复做一些类似于复制粘贴的工作,这是一个很头疼的事情, ...
- 发布一个npm包
前言 我这里是写了一个vue轮播图插件,因此我使用了vue的脚手架工具创建一个项目,当然你也可以选择自己搭建脚手架. 本例中我会使用vue脚手架创建一个项目,并发布到npm上面去. 通过脚手架创建项目 ...
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- vue-cli 3.x 开发插件并发布到 npm
为了摆脱咸鱼的身份,我给自己定了一个开源项目的目标 于是抽空写了一个 textarea,打算发布到 npm 的时候却遇到了问题 之前用 vue-cli 2.x 的时候,打包配置项非常透明,可以很容易的 ...
- 跟我一起写一个hello-world react组件并发布到npm
第一步:初始化我们的配置 $ mkdir react-hello-world $ cd react-hello-world/ $ npm init -y 修改我们的package.json文件 //p ...
- Vue:Vue2.0搭建脚手架
随着Vue.js越来越火爆,更多的项目都用到Vue进行开发,在实际的开发项目中如何搭建脚手架呢?今天就来跟大家分享一下如何使用vue-cli搭建脚手架. 一.安装node.js 1.进入官网https ...
- 将 Vue 组件库发布到 npm
制作了一套自己的组件库,并发布到npm上,项目代码见 GitHub . 前期准备 有一个npm账号 安装了vue-cli 搭建项目 vue init webpack hg-vcomponents cd ...
- 使用Vue CLI 3将基于element-ui二次封装的组件发布到npm
前言:之前在网上找的好多都是基于vue-cli 2.x的,而使用vue-cli 3的文章比较少,Vue CLI 3 中文文档,所以我在自己尝试的时候把几篇文章结合了一下,调出来了我想要的模式,也就是V ...
- React 如何搭建脚手架
React 如何搭建脚手架 npm install -g create-react-app //安装 create-react-app react-demo // react-demo ...
随机推荐
- SQL Server数据库的兼容级别
SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行M ...
- 4,postman和newman的联合使用
1:下载安装node.js http://nodejs.cn/ 出现版本号证明安装node.js成功 2:安装newman npm install -g newman --registry=https ...
- python 10 迭代器和三元运算符
一.迭代器 1.迭代器协议:对象必须提供一种next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,终止迭代 2.可迭代对象:实现了迭代器协议的对象 3.pytho ...
- JSP 页面中插入图片
第一步 在 JSP 页面中插入图片 EL 表达式 ${pageContext.request.contextPath } 的值为当前的项目名称 <html> ... <body> ...
- [Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed ...
- 修改pudb颜色
2019-02-19,18点20vim调整颜色vim ~/.vimrc 这个pudb的配色用上的方法改不了.调试状态时候按o和回车能切换console和调试界面. 成功了.通过修改pudb源代码来实现 ...
- Object.defineProperty(obj,prop,descriptor)使用
初步实现了数据自动映射到html中,动态修改对象数据也很自动更新到html.提供addProps方法-添加新增属性并初始化自动监听代码如下: 1.abserve.js:包含数据监听实现.类似jquer ...
- xbee3的先进性功能用法
xbee3以及xbee3 PRO 是digi无线模块的又一大突破:不仅实现了所有2.4G的模块整合,更在以后的程序更新中会增加蓝牙功能:它打通了xbee系列1和系列2之间的壁垒:不同于xbee S2C ...
- echarts使用踩坑实录之气泡图
最近想做一个统计文章点击率,评论率和点赞率的功能,听说echarts可以轻易完成它,于是我就选择使用echarts,考虑到我做的模块上文章是没有分类的,所以我的统计是基于一个个点,这一看嘛,感觉散点图 ...
- C/C++字符串相关知识使用整理
C++字符串处理有最原始的char以及string两种方式,这里对其常用的功能进行总结. #include <string>using namespace std; ]; string s ...