创建适用于个人或团队的开源项目规范管理多个子项目,从而解决多个包相互依赖,发布时需要手动维护多个包的问题。lerna的文件树:my-lerna-repo/package.jsonpackages/package-1/package.jsonpackage-2/package.json首先以项目所有者的身份全局安装:$npminstall-glerna#或$yarnglobaladdlernainit在项目中使用如下命令:$lernainit#or$lernainit--independent这个命令需要注意的是lerna提供了两种管理项目模式:fixed/lockedmode(默认)在Fixed模式下,项目通过单一版本控制。版本号放在项目根目录的lerna.json文件的version字段中。当你执行lernapublish时,如果有任何文件更新,它会发布一个新版本。独立模式(—independent)在这种模式下,项目中的每个包都独立维护自己的版本,它会忽略lerna.json中定义的versionpublish以确定是否需要发布。如果需要发布,需要更新lerna.json中的版本号。将package.json中的版本号更新为最新。更新新版本的依赖项。为新版本创建一个gitcommit和tag。将项目更新为npm以进行发布。除非您在package.json中设置private:true,否则不会发布所有包。配置如果我们使用yarn,可以在lerna.json中做如下配置:{..."npmClient":"yarn"...}代码检查和规范在一个项目中,多人开发时会遇到代码格式问题.解决方案:使用Eslint项目主需要全局安装:$npminstalleslint-g#或$yarnglobaladdeslint在项目中执行命令:$eslint--initReact项目推荐使用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.mdatmaster·standard/标准·GitHubPrettierEslint+prettier解决所有代码风格和格式问题。用githook解决lint目前比较成熟的是husky和lint-staged的结合:$npminstalllint-stagedhusky-D#或者$yarnaddlint-stagedhusky-D然后在package.json中添加:"lint-staged":{"packages/*/src/**/*.js":["eslint--fix","prettier--write","gitadd"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},Tslint如果你的项目使用TypeScript那么tslint可以帮助你很多!$yarnadd-Dprettiertslint-config-prettiertslint-plugin-prettierhuskypretty-quickTslint.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插件。官网:EditorConfigcommit非统一的主流方法是commitizen。项目所有者应该全局安装它:$npminstall-gcommitizen#或$yarnglobaladdcommitizen之后,我们在项目中选择angular格式的提交消息,并在终端中输入以下命令:$commitizeninitcz-conventional-changelog--save-exact#或$commitizeninitcz-conventional-changelog--yarn--dev--exact上面的命令为你做了三件事:为适配器安装cz-conventional-changelognpm模块。将其保存到package.json的依赖项或devDependencies。在package.json的根目录下添加config.commitizen键,如下:jsonon"scripts":{"commit":"git-cz"}注意:如果你使用像husky这样的预提交钩子,你需要将脚本命名为"commit"以外的名称(例如"cm":"git-cz").原因是因为npm-scripts有一个“特性”,它会自动运行名为prexxx的脚本,其中xxx是另一个脚本的名称。本质上,如果您将脚本命名为“commit”,npm和husky将运行“precommit”脚本两次,解决方法是防止precommit脚本被npm触发。之后,如果其他人也参与了你的项目开发,我们最好在仓库里也安装依赖$npminstall-Dcommitizen#或者$yarnaddcommititzen-Dchangelog手动维护changelog在我之前的wx-tsApi项目中是一个很头疼,所以找自动化的东西。全局安装$npminstall-gconventional-changelog-cli#或$yarnglobaladdconventional-changelog-cli并添加脚本{"scripts":{"changelog":"conventional-changelog-pangular-在package.json文件中iCHANGELOG.md-s-r0&&gitaddCHANGELOG.md"}}官方推荐的工作流程:进行更改并提交这些更改以确保Travis变绿Changeversionchangelogcommitpackage.jsonandCHANGELOG.mdfileTagpushbasedonlernaWorkflow(自己研究有误请指出):makechangesgit-cz"conventional-changelog-pangular-iCHANGELOG.md-s-r0&&gitaddCHANGELOG.md"提交CHANGELOG.md文件gitpushlernapublish学习自eJayYoung(如何创建一个标准化的开源项目)
