注意:文章基于“webpack4”讲解
编写可维护的webpack构建配置
构建配置抽离成 npm 包的意义
- 通用性
- 业务开发者无需关注构建配置
- 统一团队构建脚本
- 可维护性
- 构建配置合理的拆分
- README文档、ChangeLog文档等
- 质量
- 冒烟测试、单元测试、测试覆盖率
- 持续集成
构建配置包设计
- 通过多个配置文件管理不同环境的webpack配置
- 基础配置: webpack.base.js
- 开发环境: webpack.dev.js
- 生成环境: webpack.prod.js
- SSR环境: webpack.ssr.js ...
- 抽离成一个 npm 包统一管理
- 规范 : Git commit 日志、README、ESLint规范、Semver规范
- 质量 : 冒烟测试、单元测试、测试覆盖率和 CI
通过webpack-merge组合配置
- 合并配置: module.exports = merge(baseConfig, devConfig);
功能模块设计和目录结构
使用ESLint规范构建脚本
// .eslintrc.js
module.exports = {
"parser": "babel-eslint",
"extends": "airbnb-base",
"env": {
"browser": true,
"node": true
}
};
冒烟测试执行
- 构建是否成功
- 每次构建完成 build 目录是否有内容输出
- 是否有 JS、CSS 等静态资源文件
- 是否有 HTML 文件
判断构建是否成功
- 在示例项目里面运行构建,看看是否有报错
判断基本功能是否正常
- 编写 mocha 测试用例
- 是否有 JS、CSS 等静态资源文件
- 是否有 HTML 文件
单元测试与测试覆盖率
- 技术选型:Mocha + Chai
- 测试代码:describe, it, except
- 测试命令:mocha add.test.js
单元测试接入
-
- 安装 mocha + chai npm i mocha chai -D
-
- 新建 test 目录,并增加 xxx.test.js 测试文件
-
- 在 package.json 中的 scripts 字段增加 test 命令 "scripts": { "test": "node_modules/mocha/bin/_mocha” },
-
- 执行测试命令 npm run test
持续集成的作用
- 优点:
- 快速发现错误
- 防止分支大幅偏离主干
核心措施是,代码集成到主干之前,必须通 过自动化测试。只要有一个测试用例失败, 就不能集成。
接入 Travis CI
-
- travis-ci.org/ 使用 GitHub 账号登录
-
- 在 travis-ci.org/account/rep… 为项目开启
-
- 项目根目录下新增 .travis.yml
travis.yml 文件内容
- install 安装项目依赖
- script 运行测试用例
发布到 npm
- 添加用户: npm adduser
- 升级版本
- 升级补丁版本号:npm version patch
- 升级小版本号:npm version minor
- 升级大版本号:npm version major
- 发布版本:npm publish
Git 规范和 Changelog 生成
- 良好的 Git commit 规范优势:
- 加快 Code Review 的流程
- 根据 Git Commit 的元数据生成 Changelog
- 后续维护者可以知道 Feature 被修改的原因
提交格式要求
本地开发阶段增加 precommit 钩子
- 安装 husky
- npm install husky --save-dev
- 通过 commitmsg 钩子校验信息
"scripts": {
"commitmsg": "validate-commit-msg",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
},
"devDependencies": {
"validate-commit-msg": "^2.11.1",
"conventional-changelog-cli": "^1.2.0",
"husky": "^0.13.1"
}
开源项目版本信息案例
- 软件的版本通常由三位组成,形如: X.Y.Z
- 版本是严格递增的,此处是:16.2.0 - > 16.3.0 -> 16.3.1
- 在发布重要版本时,可以发布alpha, rc 等先行版本
- alpha和rc等修饰版本的关键字后面可 以带上次数和meta信息
遵守 semver 规范的优势
- 优势:
- 避免出现循环依赖
- 依赖冲突减少
语义化版本(Semantic Versioning)规范格式
- 主版本号:当你做了不兼容的 API 修改,
- 次版本号:当你做了向下兼容的功能性新增,
- 修订号:当你做了向下兼容的问题修正。
先行版本号
先行版本号可以作为发布正式版之前的版本,格式是在修订版本号后面加上一个连接 号(-),再加上一连串以点(.)分割的标识符,标识符可以由英文、数字和连接号 ([0-9A-Za-z-])组成。
- alpha:是内部测试版,一般不向外部发布,会有很多 Bug。一般只有测试人员使用。
- beta:也是测试版,这个阶段的版本会一直加入新的功能。在 Alpha 版之后推出
- rc:Release Candidate) 系统平台上就是发行候选版本。RC 版不会再加入新的功能了,主 要着重于除错。
代码仓库: github.com/glihui/guo-…
最后:
如果你有梦想,一定要来大城市,这里可以帮您实现你想要的
有些梦想,需要借助城市的力量才能实现
其它系列文章链接