简介
在前端项目开发中,经常会使用到 lerna 来管理多个包。而 lerna 在管理包时,是将每个包分别放在各自的目录内进行开发的。这样做虽然方便管理,但也带来一些问题。比如,在包与包之间需要相互依赖时,就需要手动设置软链接,来保证相互依赖时不会出现问题。而这个工作在包数量增多时很快就会让人非常头疼。
为了解决这个问题,@yoitsro/lerna-create-symlink 这个 npm 包应运而生。它可以自动为 lerna 项目创建软链接,方便开发者进行依赖管理。
安装
要使用 @yoitsro/lerna-create-symlink,只需在项目的根目录中运行以下命令:
npm install @yoitsro/lerna-create-symlink --save-dev
安装完成后,就可以在项目中使用它了。
使用步骤
在根目录下创建 lerna.json 文件。如果已存在,则跳过此步骤。lerna.json 文件应该长成这样:
-- -------------------- ---- ------- - ----------- - ------------ -- ---------- -------------- ------------ ------ ----------- - -------- - ------------ ------ --------- ------- - - -
在需要进行软链接的子包目录下,创建 package.json 文件。然后将它的 name、version、dependencies 属性设置好。值得注意的是,name 应该是 lerna.json 中配置的 packages 目录后面的路径。比如,如果 packages 目录下有一个名为 test 的子包,那么 test 的 name 应该是 @项目名称/test。示例:
{ "name": "@test-project/test", "version": "1.0.0", "dependencies": { "react": "^17.0.2", "react-dom": "^17.0.2" } }
在项目根目录下创建文件 .npmrc,然后将以下内容复制进去:
hoist-pattern[]=
这一步主要是为了防止软链接覆盖父级依赖项。
最后,在运行 lerna bootstrap 之前,还需要在项目的 package.json 文件中添加以下内容:
{ "scripts": { "lerna-create-symlink": "@yoitsro/lerna-create-symlink" } }
完成以上操作后,在命令行中运行如下命令:
npm run lerna-create-symlink
这样,子包之间就会自动生成软链接了。
示例代码
假设项目名称为 test-project,packages 目录下有名为 test1 和 test2 的两个子包,它们之间相互依赖。现在我们来演示如何使用@yoitsro/lerna-create-symlink。
在根目录下创建 lerna.json 文件。这里不再赘述。
在 test1 目录中创建 package.json 文件,写入以下内容:
-- -------------------- ---- ------- - ------- ---------------------- ---------- -------- --------------- - ---------------------- --------- -------- ---------- ------------ --------- - -
在 test2 目录中创建 package.json 文件,写入以下内容:
-- -------------------- ---- ------- - ------- ---------------------- ---------- -------- --------------- - ---------------------- --------- -------- ---------- ------------ --------- - -
注意,这里的 "dependencies" 中,必须加上相互依赖的包名。
在项目根目录下创建文件 .npmrc,写入以下内容:
hoist-pattern[]=
在 package.json 文件的 "scripts" 中添加以下内容:
{ "scripts": { "lerna-create-symlink": "@yoitsro/lerna-create-symlink" } }
在命令行中运行以下命令:
npm run lerna-create-symlink
运行完成后,子包间的软链接就已经自动生成了。现在我们就可以愉快地进行开发了。
总结
通过使用 @yoitsro/lerna-create-symlink,我们可以省去手动设置软链接的麻烦,让依赖管理变得更加简单方便。希望这篇文章对大家有所帮助,更多的详细内容可以去 npm 官网查看。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b6351ab1864dac673a7