打造个人or团队实用的开源项目范例

打造个人or团队实用的开源项目范例

lerna

Lerna 是一个用来优化托管在gitnpm上的多package代码库的事情流的一个治理工具,能够让你在主项面前目今治理多个子项目,从而处理了多个包相互依靠,且宣布时须要手动保护多个包的题目。

lerna的文件树:

my-lerna-repo/
  package.json
  packages/
    package-1/
      package.json
    package-2/
      package.json

起首作为项目具有者全局装置:

$ npm install -g lerna
# or
$ yarn global add lerna

init

在项目运用以下敕令:

$ lerna init
# or
$ lerna init --independent

这条敕令要注重的是,lerna供应两类治理项目的形式:

  1. fixed/locked mode(default)

    1. Fixed形式下,项目经由过程单一的版本举行掌握。版本号放在项目根目录下的lerna.json文件的version这个字段。当你实行 lerna publish,假如有文件更新,它将宣布新的版本。
  2. independent mode(—independent)

    1. 这类形式下,项目里的各个package自力保护本身的version,它将会疏忽lerna.json中定义的version

publish

$ lerna publish

Publish它做了以下几件事变

  1. 宣布项目里的每一个模块
  2. 实行lerna updated肯定是不是须要宣布
  3. 假如须要宣布 给lerna.json 版本号做自增
  4. 更新package.json里的版本号至最新
  5. 为新版本更新dependencies
  6. 为新版本建立一个git commit 和tag
  7. 宣布更新项目到npm
  8. 一次宣布一切packages

只要你在package.json里设置private: true这个包则不会被宣布。

设置

假如我们运用yarn我们能够在lerna.json做以下设置:

{
...
  "npmClient": "yarn"
...
}

代码搜检和范例

在一个项目中,多人开辟时会碰到代码花样题目。
处理方案:

运用Eslint

项目具有者须要全局装置:

$ npm install eslint -g
# or
$ yarn global add eslint

在项目中实行敕令:

$ eslint --init

React项目引荐运用airbnb范例。

{
    "devDependencies": {
        "eslint": "^4.19.1",
        "eslint-config-airbnb": "^17.0.0",
        "eslint-plugin-import": "^2.13.0",
        "eslint-plugin-react": "^7.10.0",
        "eslint-plugin-jsx-a11y": "^6.1.1"
    }
}

运用Standard

参考中文文档 standard/README-zhcn.md at master · standard/standard · GitHub

Prettier

Eslint + prettier 处理了代码作风和花样化的一切题目。

与git hook来处理什么时候lint

现在比较成熟的是huskylint-staged二者连系:

$ npm install lint-staged husky -D
# or
$ yarn add lint-staged husky -D

接着在package.json中到场:

"lint-staged": {
    "packages/*/src/**/*.js": [
      "eslint --fix",
      "prettier --write",
      "git add"
    ]
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },

Tslint

假如你的项目使TypeScript那末tslint能协助你很多!

$ yarn add -D prettier tslint-config-prettier tslint-plugin-prettier husky pretty-quick

Tslint.json

{
    "defaultSeverity": "error",
    "extends": [
                "tslint:latest",
                "tslint-react",
                "tslint-config-prettier"
    ],
    "jsRules": {},
    "rules": {
            "prettier": [true, "./.prettierrc"],
            "ordered-imports": false,
            "object-literal-sort-keys": false
        },
    "rulesDirectory": [
            "tslint-plugin-prettier"
        ]
}

编辑器的差别

处理方案:
主流的都是运用EditorConfig
只须要在根目录新建一个.editorconfig文件,然后去依据文档自行定义。再给本身运用的编辑器装置editorConfig的插件即可。
官方网站:EditorConfig

commit 不一致

主流的要领是commitizen.
项目具有者应该全局装置:

$ npm install -g commitizen
# or
$ yarn global add commitizen

以后我们在项目里选用angular花样的commit message并在终端下输入以下敕令:

$ commitizen init cz-conventional-changelog —save-exact
# or
$ commitizen init cz-conventional-changelog --yarn --dev --exact

上面的敕令为你做了三件事:

  1. 装置cz-conventional-changelog的adapter的npm模块。
  2. 将其保存到package.json的dependencies或devDependencies。
  3. 将config.commitizen键增加到package.json的根目录,以下所示:
"config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
  }

然后在package.json里的scripts里加上

"scripts": {
    "commit": "git-cz"
 }

注重:
假如你运用像husky如许的precommit hooks,你须要为剧本定名除“commit”以外的其他东西(比方“cm”:“git-cz”)。
缘由是因为npm-scripts有一个“feature”,它自动运转称号为prexxx的剧本,个中xxx是另一个剧本的称号。
本质上,假如您将剧本定名为“commit”,则npm和husky将运转两次“precommit”剧本,而且处理要领是阻挠npm触发的precommit剧本。

以后假如有他人也介入进你的项目开辟中,我们最幸亏仓库里也装置依靠

$ npm install -D commitizen
# or
$ yarn add commititzen -D

changelog

经由过程手动去保护changelog在我之前的谁人wx-tsApi项目中是异常头疼的一件事变,所以去寻觅自动化的东西。

全局装置

$ npm install -g conventional-changelog-cli
# or
$ yarn global add conventional-changelog-cli

然后在package.json文件中增加scripts

{
    "scripts": {
    "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"
    }
}

官方引荐的事情流程:

  1. 做出转变
  2. 提交这些转变
  3. 肯定Travis变成绿色
  4. 改version
  5. changelog
  6. commit package.json 和CHANGELOG.md文件
  7. 打Tag
  8. push

基于lerna的事情流程(本身研讨的有不对请指出):

  1. 做出转变
  2. git-cz
  3. “conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md”
  4. commit CHANGELOG.md 文件
  5. Git push
  6. lerna publish

自创

eJayYoung(怎样打造范例的开源项目)

    原文作者:嗯?
    原文地址: https://segmentfault.com/a/1190000018930737
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞