1、lerna + npm link 软链的使用流程:
-
0、先将lerna 项目进行打包:执行项目全局的npm run build(会自动将每个包build),因为最终被引用的是lib(或其他编译打包好的文件),而绝不是源代码
-
1、先lerna link 将整个组件包link到全局node_modules(实际上只能软链主包,其他的
需要手动一个一个link,不是手动进入子包,而是直接在外部执行lerna bootstrap更新整个包的内部的依赖, 然后再次执行npm run build-> lerna link) -
2、将项目中的node_modules删掉(执行 rmdir /s node_modules)
-
3、在项目中使用: npm link 包名
-
4、再 npm install 其他的包
-
5、再 npm start
-
6、如果首次link成功了,那么后续的link只需要再次执行1、卸载原包(npm unlink),再重新npm link
2、lerna包发布流程及注意事项:
-
1、先在外部打包:npm run build (同6.0)
-
2、再git add . && git commit
-
3、再执行lerna publish,然后每一个包的gitHead值会发生改变,然后同时会发生两种情况:
- 1、npm登录成功 直接发布成功
- 2、npm登录失败 –> 依次进入每一个包内,手动发布:(cd packages/子包名 –> lerna ls (获取所有包)-> npm/cnpm/tnpm publish)
-
4、每一次发布,子包都会生成独立的包
8、锁包流程
当依赖包发生改变时,需要修改package.json 和 package-lock.json中的版本号,package-lock.json中的版本号是自动生成的,如何实现自动生成呢?
-
1、 先手动修改package.json中依赖包的版本号
-
2、 删掉node_modules (rmdir /s node_modules)
- 1、有时候删掉这个文件,锁包完成之后,重新install会导致一些包安装不上,有可能是-lock的原因,因此最好是同时把packages-lock.json也删掉(del -F packages-lock.json)
-
3、 执行:npm i 包名@版本号–package-lock-only
- a) 例如:npm i antd@4.0.0 –package-lock-only
- b) cnpm/tnpm 都不太行
- c) 如果依赖包是以多个包的形式存在的,就依次执行a
- d) 其实单独执行a的时候,实际上也会修改package.json中的版本号,同时也会修改-lock中的内容
- e) 如果包的源更换了,切换源的方法:npm i packageName –package-lock-only –registry=包源
-
4、再整体安装所有的包:npm/cnpm/tnpm i
-
5、然后就可以启动了:npm start