涉及知识点:javascript
根据部门大佬需求,封装一个电话号码自动格式化的一个vue插件。以下:css
vue组件封装的三个关键点vue
props支持以下的值:java
slot的话,由于平时不多用,因此这块不知道该怎么应用进去,但愿有知道的能够提供一下思路。node
events支持以下的值:git
目前想到的是,尽量多的给回调到父元素。github
不足的地方:npm
公司代码是托管在gitlab上的,因为公司级别的组件库不能直接push代码,因此只能先fork一份代码,而后再merge request合并过去。json
代码提交前有单元测试,eslint校验,若是不经过,不容许提交代码。一份好的代码提交格式(参考网上):segmentfault
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
复制代码
分别由以下部分构成:
原本想集成进去,可让代码自动生成这种格式,可是时间不够(需求不用作了?),就先这样吧。
提一下,能够有些人不知道,拦截提交是husky和lint-staged的功劳,在安装了这两个以后,在package.json的scripts中写以下代码:"precommit": "lint-staged"
,除此以外,还须要加
"lint-staged": {
"src/**/*.vue": ["eslint --fix", "git add"]
}
复制代码
参考:用 husky 和 lint-staged 构建超溜的代码检查工做流
这样子就会只lint改动后的代码而不会所有lint一次了。
单元测试是参考了Vue Test Utils 这边文章写的,最后选用的是jest。
之前一直不明白为何要写单元测试,每一种状况什么的,让测试本身去测不就完了,如今懂了,就是防止改代码改出什么奇怪的bug。
好比单元测试写了不少测试用例,历经千辛万苦,终于跑通了,可是下一次改动了代码,再跑一次单元测试就是为了保证你的代码仍是正常的(不过写单元测试是真心无聊。。。)。
集成jest的时候还遇到一个坑,jest竟然不认识import语法,@babel/env不起做用吗?
后来在网上找了个解决方法:
yarn add --dev babel-core@^7.0.0-bridge.0
复制代码
能够认为 babel-core@^7.0.0-bridge.0 插件是将 babel6 衔接到 babel7 的一个桥梁
另外的话,若是编辑器使用的是vscode,就能够集成Jest和Jest Snippets,这样每次打开项目的时候,会自动帮你跑测试用例。
为了防止npm publish的时候,忘了打包文件,在scripts字段中加入
"prepublishOnly": "npm run build", // 加的是这句,下面两句是关联的
"prebuild": "npm run test",
"test": "jest",
复制代码
这样子在发布前就会跑单元测试和打包代码,防止乌龙事件。
另外若是想让用户体验新特性,可是又不想更新大版本,通常会采用什么@beta之类的。 就是发npm包的时候,打tag
npm publish --tag beta
复制代码
须要注意,打包的代码多是须要运行在你浏览器端或者node端
因此你要在package.json中引入四个字段:
"main": "dist/my-component.umd.js",
"module": "dist/my-component.esm.js",
"unpkg": "dist/my-component.min.js",
"browser": {
"./sfc": "src/my-component.vue"
},
复制代码
掘金里有一篇优秀的文章推荐食用:package.json 中 你还不清楚的 browser,module,main 字段优先级
因为公司是搭建了私人的npm仓库,因此在发布前须要切换到公司的源,而且使用公司的帐号密码登陆,本身封装的时候要注意问清楚公司是否有本身的npm仓库。
对于以上的操做,已经有人封装好了一个特别优秀的npm插件以供大伙使用,那就是:
vue-sfc-cli,一款组件开发脚手架,开发组件并发布至npm的利器,基本上我上述的操做他都集成进去了,除了单元测试。十分好用的东西,强烈安利,
最后还能作的东西就是充分利用gitlab的ci功能了,其实上述操做能够彻底脱离人工publish什么的,咱们只须要关注业务代码,而且提交代码,剩余的交给gitlab ci去作就能够了。这部分还在学习,大概的需求其实就是,开发完毕后,交给gitlab的runner去跑对应的脚本,脚本中能够写代码的
gitlab的强大之处是在于它能够指定分支作指定的事(多人协做开发很好使,若是是一我的爱怎么搞怎么搞),而且能够选择手动部署仍是自动化部署,建议学习gitlab的ci,早日脱离原始时代的刀耕火种。