詳細實現方式以及文件下載請前往 https://www.passerma.com/article/74
一、初始化項目
1.創建腳手架文件夾
執行 npm init -y 初始化項目
2.全局安裝lerna
使用 npm i lerna -g 全局安裝lerna
3.初始化lerna項目
使用 lerna init 初始化項目
這步需要裝有 git 才可以執行,初始化完成后生成lerna.json以及packages文件夾
4.新建.gitignore文件
將一些無需上傳的文件忽略

二、創建packages
1.創建腳手架主文件
使用
lerna create core
創建腳手架主文件
其中各選項意義如下
package name 項目名 不能和已有npm包重名,我們這里使用@orgName/npmName,是指通過建立orgName組織方式發布npm包
version 版本號 起始1.0.0就ok
description 描述
keywords 關鍵詞
homepage 文件目錄,可不填
entry point 主入口,由於我們這里是腳手架主文件,無需配置
但是之后創建模塊的時候需要填寫主文件入口,之后會演示
git repository git倉庫,可不填
然后回車即可創建成功

2.創建腳手架工具包
使用
lerna create utils
創建腳手架工具包
創建過程如上

三、lerna使用方法
1.安裝依賴包
lerna add <package>[@version] [--dev] [--exact] [--peer]
我們這里以lodash為例,可以選擇只安裝到utils包里面,輸入 lerna add lodash packages/utils
如果需要安裝到所有包里,直接不指定包名即可 lerna add lodash

2.刪除依賴包
有時候我們需要刪除依賴包,則使用 lerna clean 即可
注意:刪除后如果需要再重新添加相同依賴包,需要將對應包下面的package.json里的dependencies里的依賴包名刪除
lerna bootstrap
3.重新安裝依賴
lerna bootstrap
這樣會幫我們安裝package.json里的dependencies依賴項

4.鏈接依賴
lerna link
主要是將本地包進行相互引用
比如我們需要在core里引入utils包,則可以現在core包的package.json的dependencies里添加utils的依賴
"dependencies": { "@passerma-lerna-cli-test/utils":"^1.0.0" }
然后使用 lerna link 即可

然后我們可以看到core包里多了個node_modules文件夾,里面的@passerma-lerna-cli-test/utils軟鏈接到了本地的utils包

5.執行shell腳步
lerna exec -- <command> [..args] # runs the command in all packages
該命令運行的目錄為 packages目錄里的每個包
默認是所有包都執行,比如可以在每個包里新建一個test文件夾

結果如下

也可以指定某個包,使用
lerna exec --scope @passerma-lerna-cli-test/utils -- rm -rf test
注意輸入的為package.json里的包名

結果如下,只刪除了utils下的test目錄

6.執行npm腳本
$ lernarun <script> -- [..args] # runs npmrun my-scriptin all packages that have it $ lernarun test $ lernarun build
四、發布腳手架
1.注意事項
在發布前,我們需要將代碼commit到git倉庫上,可以選擇任意一款遠程倉庫
2.查看變更包,哪些包將會發布
lerna changed
可見,我們新創建的兩個包都會發布

3.查看變更代碼
$ lernadiff [package]$ lernadiff# diff a specific package$ lernadiff package-name
修改代碼,再使用命令即可查看diff信息

4.變更版本號
lernaversion 1.0.1# explicit lernaversionpatch# semver keyword lernaversion# select from prompt(s)

5.發布
lerna publish# publish packages that have changed since the last release lerna publishfrom-git# explicitly publish packages tagged in the current commit lerna publishfrom-package# explicitly publish packages where the latest version is not present in the registry
注意,如果是公共npm包,需要在package.json加上
"publishConfig": { "access":"public" }
發布前需要先登錄npm,使用 npm adduser
注意:同時要先在npm官網創建組織,及@符號后面/前面的組織名

運行發布,需要選擇版本號,如下


6.創建腳手架
在core下新建bin文件夾
在bin里新建index.js文件
#! /usr/bin/env node console.log('這是一個腳手架')
然后配置命令,在core里的package.json,添加
"bin": { "passerma-cli-test-lerna": "bin/index.js" },
名字即為腳手架名字,值為腳手架入口文件位置
提交git倉庫,然后 lerna publish
7.安裝腳手架
npm i cli-name -g
然后使用輸入之前配置bin的命令名字

至此,腳手架框架的搭建及發布已完成,接下來就是編寫自己的腳手架了
詳細實現方式以及文件下載請前往 https://www.passerma.com/article/74
