Skip to content
This repository has been archived by the owner on Feb 9, 2021. It is now read-only.

Engineering collections #17

Open
lbwa opened this issue Jun 20, 2018 · 0 comments
Open

Engineering collections #17

lbwa opened this issue Jun 20, 2018 · 0 comments
Labels
various means anything else

Comments

@lbwa
Copy link
Owner

lbwa commented Jun 20, 2018

规范 commit log

推荐工具:commitizen

  • 安装

(以项目级安装为例)

yarn run commitizen cz-conventional-changelog -D
  • 配置

(in package.json

"script": {
  "commit": "yarn run lint && git add . && git-cz"
},
"config": {
  "commitizen": {
    "path": "./node_modules/.bin/cz-conventional-changelog"
  }
}

Notice:推荐在提交前执行 lint 检查并自动修复,eslint 需另外配置。

"script": {
  "lint": "./node_modules/.bin/eslint --fix --ext .js lib/"
}

更新版本

version x.y.z

# 修复 bug 等小修改,并向下兼容
npm version patch <=> z++

# 增加新功能,并向下兼容
npm version minor <=> y++ && z=0

# 重构等破坏性升级,不兼容之前的版本
npm version major <=> x+= && y=0 && z=0

或者使用 yarn 升级版本:

# yarn 1.7.0+ 版本
yarn version --patch
yarn version --minor
yarn version --major

yarn 的特别之处在于执行命令行指令的同时会默认执行 git tag v1.0.0 打上无注释标签npm version 默认关闭此功能。

开源项目更新版本流程

  1. 更新开源库代码之后,执行 eslint 检查。

  2. npm version [patch|minor|major] 更新版本号。

    • 不使用 yarn 是为了分离更新版本号和 git tag v1.0.0 命令,使得生成 tag 时包含最新的代码更新。或者执行 yarn config set version-git-tag false 来关闭默认的生成标签行为(more detail)。

    • 若不关注最新构建后的代码是否存在版本号,那么可直接使用 yarn 的相关命令。但必须在更新版本号前 commit 最新代码至仓库,一定要保证生成 tagcommit 之后。

  3. 打包构建最新版本源码,其中 包含最新版本号

  4. 使用 commitizen 规范地提交本地代码更新至本地仓库。

    • commitizen 的执行必须先于生成 tag
  5. 将本地仓库与远程仓库同步。

    • 此时确保 CI 能够 正常部署,否则修改源码回到第 1 步。
  6. git tag v[version number] 生成标签,此时标签包含了最新的代码更新

    • 在最后生成 tag 的目的就是要让最新的标签包含最新的代码更新(其中有包含最新版本号的构建后代码)。若在之前使用 yarn 更新版本号,那么新的标签就不会包含最新的代码更新(因为没有 committag 是打在 commit log 上的),并且之后脚本将生成错误的 CHANGELOG
  7. 将本地 tags 与远程 tags 同步。

    • git push origin --tags
  8. 更新 CHANGELOG

    • 因为脚本生成 CHANGELOG 是根据 tag 记录和 commit log 生成。
  9. 使用 commitizen 规范提交最新的 CHANGELOG 至本地仓库。并同步至远程仓库。

  10. yarn publish --new-version [version number] 发布至 npm

以上所有步骤可编写为一个脚本实现(extension)。

Reference

Recommended workflow

类库打包格式

推荐工具:rollup

  • amd – 异步模块定义,用于像 RequireJS 这样的模块加载器
define(`${moduleName}`, ["vue"], factory)
  • cjsCommonJS,适用于 NodeBrowserify/Webpack
// CommonJS 2
module.exports = factory(require("vue"))

// CommonJS
exports[`${moduleName}`] = factory(require("vue"))
  • es– 将软件包保存为 ES 模块文件
export default moduleName
  • iife – 一个自动执行的功能,适合作为 <script> 标签(source)。

  • umd – 通用模块定义,兼容 amdcjsiife

@lbwa lbwa added the various means anything else label Jun 20, 2018
@lbwa lbwa changed the title npm detail Git collections Jul 5, 2018
@lbwa lbwa changed the title Git collections Engineering collections Aug 9, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
various means anything else
Projects
None yet
Development

No branches or pull requests

1 participant