如何在本地测试 monorepo?
How to test a monorepo locally?
我有一个大项目,是一个由多个脚本和库组成的monorepo,它的结构如下:
package.json // "private":true
\packages
\comp1
\package.json // an actual component
\comp2
\package.json // an actual component
\comp3
\package.json // an actual component
我用 yarn pack
做了一个 monorepo.tgz
。
然后我制作了一个测试应用程序,其 package.json
看起来像这样:
"scripts": {
// this is a script in one of the monorepo's components
"start": "ui-build --bundle --watch -p 3000"
}
"dependencies": {
"comp1": "../monorepo/monorepo.tgz",
"comp2": "../monorepo/monorepo.tgz",
"comp3": "../monorepo/monorepo.tgz",
...
但它不起作用,当我 运行 start
它抱怨 ui-build: command not found
时。
我如何在本地测试此 monorepo 以尽可能接近地模拟已发布的 npm 包?
经过一些研究,我发现 https://verdaccio.org/ 是无需部署到 npm 存储库即可测试库的最佳工具
使用 npm link
(或 yarn link
),您可以 'install' 来自本地开发环境的包。
为此,您首先 运行 npm link
在您要安装的包的目录中,所以在 \packages\comp1
中。然后在你的测试应用程序中,运行 npm link comp1
。这将安装您的包。对您要安装的任何其他产品重复上述步骤。
更多信息:
https://docs.npmjs.com/cli/v6/commands/npm-link
https://classic.yarnpkg.com/en/docs/cli/link/
要直接导入文件而不使用 npm link
或 yarn link
,您必须在路径前添加 file:
。而且我相信您必须打包每个文件,但您可以直接 link 到路径而不打包它。如果您 link 直接访问本地包文件夹,请务必构建它。
以你的例子为例:
"comp1": "file:../monorepo/comp1.tgz",
"comp2": "file:../monorepo/comp2.tgz",
"comp3": "file:../monorepo/comp3.tgz",
或
"comp1": "file:../path/to/monorepo/packages/comp1",
"comp2": "file:../path/to/monorepo/packages/comp2",
"comp3": "file:../path/to/monorepo/packages/comp3",
我有一个大项目,是一个由多个脚本和库组成的monorepo,它的结构如下:
package.json // "private":true
\packages
\comp1
\package.json // an actual component
\comp2
\package.json // an actual component
\comp3
\package.json // an actual component
我用 yarn pack
做了一个 monorepo.tgz
。
然后我制作了一个测试应用程序,其 package.json
看起来像这样:
"scripts": {
// this is a script in one of the monorepo's components
"start": "ui-build --bundle --watch -p 3000"
}
"dependencies": {
"comp1": "../monorepo/monorepo.tgz",
"comp2": "../monorepo/monorepo.tgz",
"comp3": "../monorepo/monorepo.tgz",
...
但它不起作用,当我 运行 start
它抱怨 ui-build: command not found
时。
我如何在本地测试此 monorepo 以尽可能接近地模拟已发布的 npm 包?
经过一些研究,我发现 https://verdaccio.org/ 是无需部署到 npm 存储库即可测试库的最佳工具
使用 npm link
(或 yarn link
),您可以 'install' 来自本地开发环境的包。
为此,您首先 运行 npm link
在您要安装的包的目录中,所以在 \packages\comp1
中。然后在你的测试应用程序中,运行 npm link comp1
。这将安装您的包。对您要安装的任何其他产品重复上述步骤。
更多信息: https://docs.npmjs.com/cli/v6/commands/npm-link https://classic.yarnpkg.com/en/docs/cli/link/
要直接导入文件而不使用 npm link
或 yarn link
,您必须在路径前添加 file:
。而且我相信您必须打包每个文件,但您可以直接 link 到路径而不打包它。如果您 link 直接访问本地包文件夹,请务必构建它。
以你的例子为例:
"comp1": "file:../monorepo/comp1.tgz",
"comp2": "file:../monorepo/comp2.tgz",
"comp3": "file:../monorepo/comp3.tgz",
或
"comp1": "file:../path/to/monorepo/packages/comp1",
"comp2": "file:../path/to/monorepo/packages/comp2",
"comp3": "file:../path/to/monorepo/packages/comp3",