如果包放置在本地,如何避免将包添加到 node_modules
How to avoid adding package to node_modules if it placed locally
我有包含应用程序和模块的存储库。 package.json
将模块包含在应用程序中,如:
"application-module": "file:../modules/application-module"
在 yarn install
之后,该依赖项添加到 node_modules
。
我想制作基于模块的应用程序。 app
文件夹重现根模块。 admin-panel-module
、account-module
等其他模块应位于 modules
文件夹中。因此,应用程序内部可能有 node_modules
,但也有 modules
文件夹用于模块。这些模块将从另一个回购协议中添加 git subtree
。所以,这样我就可以独立开发了
有什么办法可以避免添加和使用本地目录吗?
多个 node_modules 和 package.json
在任何 node/npm 项目中,您的目录树中可以有多个 package.json
,例如:
app/
package.json
node_modules
src...
account_module/
package.json
node_modules
src...
admin_module/
package.json
node_modules
src..
当您在任何 children 模块上调用 yarn
(或 npm install
ofc)时,在其本地 package.json
中列出的依赖项将安装在 本地node_modules文件夹.
所以基本上您可以解决您的问题,确保每个 children 都有自己的 package.json
及其依赖项。
不过,您 可以 将公共依赖项放在根 app
文件夹中。例如,如果您的所有项目都使用 lodash
,您可以将 lodash
依赖项放在添加的 package_json
中。在 app
文件夹中执行 yarn
后, lodash
包将安装在应用程序的 node_modules
.
之后,如果您:
require('lodash');
在任何 children 中,如果他们在自己的 [=23] 中找不到 lodash
,他们将在应用的 node_modules
文件夹中搜索 lodash
=].
如果您没有根 node_modules
,您仍然可以声明一个 package.json
局部于任何子模块,它们将有自己的 node_modules
。
因此,您可能希望完全避免公共依赖项,或者您可能希望将公共依赖项存储在 app
文件夹中。 Npm 是否涵盖了这两种方式。
但是,如果您不想处理常见的依赖关系,又担心必须在本地机器上存储大量重复的包,您可能需要 to checkout pnpm,它是 npm 的包装器,它允许在本地开发机器中节省大量 space。
我遇到了(几乎)与 yarn 相同的问题。
我创建了一个名为 "test" 的包(打字稿)。在这个包中,构建后,主要有 3 个目录:dist(构建后),node_modules 和 src.
然后我创建了另一个包 "test2" 并在这个包中添加了 "test" 作为依赖项 "yarn add c:/.../.../test"。
该软件包安装在 test2 的 node_module 中。但是,在 "test2/node_modules/test" 中,我可以找到测试的 node_modules ( "test2/node_modules/test/node_modules"。为什么?它增加了很多包的大小。
在两个 tsconfig.json(测试和测试 2)中 node_modules 被排除...
感谢
我有包含应用程序和模块的存储库。 package.json
将模块包含在应用程序中,如:
"application-module": "file:../modules/application-module"
在 yarn install
之后,该依赖项添加到 node_modules
。
我想制作基于模块的应用程序。 app
文件夹重现根模块。 admin-panel-module
、account-module
等其他模块应位于 modules
文件夹中。因此,应用程序内部可能有 node_modules
,但也有 modules
文件夹用于模块。这些模块将从另一个回购协议中添加 git subtree
。所以,这样我就可以独立开发了
有什么办法可以避免添加和使用本地目录吗?
多个 node_modules 和 package.json
在任何 node/npm 项目中,您的目录树中可以有多个 package.json
,例如:
app/
package.json
node_modules
src...
account_module/
package.json
node_modules
src...
admin_module/
package.json
node_modules
src..
当您在任何 children 模块上调用 yarn
(或 npm install
ofc)时,在其本地 package.json
中列出的依赖项将安装在 本地node_modules文件夹.
所以基本上您可以解决您的问题,确保每个 children 都有自己的 package.json
及其依赖项。
不过,您 可以 将公共依赖项放在根 app
文件夹中。例如,如果您的所有项目都使用 lodash
,您可以将 lodash
依赖项放在添加的 package_json
中。在 app
文件夹中执行 yarn
后, lodash
包将安装在应用程序的 node_modules
.
之后,如果您:
require('lodash');
在任何 children 中,如果他们在自己的 [=23] 中找不到 lodash
,他们将在应用的 node_modules
文件夹中搜索 lodash
=].
如果您没有根 node_modules
,您仍然可以声明一个 package.json
局部于任何子模块,它们将有自己的 node_modules
。
因此,您可能希望完全避免公共依赖项,或者您可能希望将公共依赖项存储在 app
文件夹中。 Npm 是否涵盖了这两种方式。
但是,如果您不想处理常见的依赖关系,又担心必须在本地机器上存储大量重复的包,您可能需要 to checkout pnpm,它是 npm 的包装器,它允许在本地开发机器中节省大量 space。
我遇到了(几乎)与 yarn 相同的问题。
我创建了一个名为 "test" 的包(打字稿)。在这个包中,构建后,主要有 3 个目录:dist(构建后),node_modules 和 src.
然后我创建了另一个包 "test2" 并在这个包中添加了 "test" 作为依赖项 "yarn add c:/.../.../test"。 该软件包安装在 test2 的 node_module 中。但是,在 "test2/node_modules/test" 中,我可以找到测试的 node_modules ( "test2/node_modules/test/node_modules"。为什么?它增加了很多包的大小。
在两个 tsconfig.json(测试和测试 2)中 node_modules 被排除...
感谢