# lerna **Repository Path**: dancinglove/lerna ## Basic Information - **Project Name**: lerna - **Description**: lerna学习+私有仓库部署 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-09-16 - **Last Updated**: 2021-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README lerna是一个脚手架 使用lerna (lerna 是实现monorepo 的工具) npm root -g 查看我们的lerna 在那个目录下 lerna -init 初始化一个lerna项目 并且会获取到我们的项目信息(并且会在 init的时候创建一个git仓库) ``` lerna notice cli v4.0.0 lerna info Initializing Git repository lerna info Creating package.json lerna info Creating lerna.json lerna info Creating packages directory lerna success Initialized Lerna files ``` package.json ``` { "name": "root", "private": true, // 是私有的,私有的是不能部署到我们的npm "devDependencies": { "lerna": "^4.0.0" } } ``` lerna.json ``` { "packages": [ "packages/*" // packages这个文件夹下对的包都是我们的写的包 ], "version": "0.0.0" } ``` ### 2.lerna 源码 调试源码 #### 2.1 配置安装源 ``` npm install -g yrm npm install -g nrm ``` #### 2.2 克隆源码 ``` git clone https://gitee.com/zhufengpeixun/lerna.git --depth=1 ``` --depth=1 的意思是下载第一层 执行命令 lerna ls 就可以看到源码中一共有多少个包,一共是61个 ``` info cli using local version of lerna lerna notice cli v4.0.0 @lerna/add // 学习 @lerna/bootstrap @lerna/changed @lerna/clean @lerna/create @lerna/diff @lerna/exec @lerna/import @lerna/info @lerna/init // 学习 @lerna/link @lerna/list @lerna/publish @lerna/run @lerna/version @lerna/child-process @lerna/cli // 脚手架 @lerna/command @lerna/conventional-commits @lerna/filter-options @lerna/global-options lerna // 核心包 @lerna/otplease @lerna/package-graph @lerna/package @lerna/project @lerna/prompt @lerna/validation-error @lerna/check-working-tree @lerna/collect-uncommitted @lerna/collect-updates @lerna/create-symlink @lerna/describe-ref @lerna/filter-packages @lerna/get-npm-exec-opts @lerna/get-packed @lerna/github-client @lerna/gitlab-client @lerna/has-npm-version @lerna/listable @lerna/log-packed @lerna/map-to-registry @lerna/npm-conf @lerna/npm-dist-tag @lerna/npm-install @lerna/npm-publish @lerna/npm-run-script @lerna/output @lerna/pack-directory @lerna/prerelease-id-from-version @lerna/profiler @lerna/pulse-till-done @lerna/query-graph @lerna/resolve-symlink @lerna/rimraf-dir @lerna/run-lifecycle @lerna/run-topologically @lerna/symlink-binary @lerna/symlink-dependencies @lerna/timer @lerna/write-log-file lerna success found 61 packages ``` 主要学习 lerna @lerna/cli @lerna/init @lerna/add #### 2.3调试源码 准备 我们执行learn的时候实际上是需要先全局安装一个lerna,然后执行lerna的时候,我们会去找core/lerna/cli.js执行。(可以看一下core/lerna/package.json文件下的 main 对应的地址) .vscode\launch.json ``` { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "skipFiles": ["/**"], "program": "${workspaceFolder}\\core\\lerna\\cli.js", "args": ["ls"] } ] } ``` ``` lerna 最核心的入口命令 @lerna/cli 解析命令行参数的工具 @lerna/init 初始化命令 @lerna/add 添加包的命令 ``` lerna create 创建4个包 ``` lerna create lerna4 --registry http://localhost:4873 lerna create @lerna4/cli --registry http://localhost:4873 lerna create @lerna4/create --registry http://localhost:4873 lerna create @lerna4/init --registry http://localhost:4873 ``` #### 为了能把项目跑起来我们先把单测跑起来 因为 全局安装了lerna我们跑单测的命令就是 lerna run test // run命令 lerna exec -- jest // exec执行命令