我有包含应用程序和模块的存储库。模块由package.json
包含在应用程序中,例如:
"application-module": "file:../modules/application-module"
在yarn install
之后,该依存关系已添加到node_modules
。
我想制作基于模块的应用程序。 app
文件夹复制根模块。 admin-panel-module
,account-module
之类的其他模块应位于modules
文件夹中。因此,应用程序内部可能有node_modules
,但模块中还有modules
文件夹。这些模块将由另一个存储库中的git subtree
添加。所以,这样我就可以独立发展
有什么方法可以避免添加和使用本地目录?
答案 0 :(得分:1)
在任何节点/ npm项目中,您的目录树中可以有多个package.json
,例如:
app/
package.json
node_modules
src...
account_module/
package.json
node_modules
src...
admin_module/
package.json
node_modules
src..
在任何子模块上调用yarn
(或npm install
ofc)时,其本地package.json
中列出的依赖项将安装在本地node_modules文件夹中< / strong>。
因此,基本上,您可以解决问题,确保每个孩子都有自己的package.json
及其依存关系。
不过,您可以将常见依赖项放在根app
文件夹中。例如,如果所有项目都使用lodash
,则可以将lodash
依赖项放在添加项的package_json
中。在yarn
文件夹中执行app
之后,lodash
程序包将安装在应用程序的node_modules
中。
之后,如果您:
require('lodash');
如果在自己的lodash
中找不到node_modules
,他们将在应用程序的lodash
文件夹中搜索node_modules
。
如果您没有根node_modules
,则仍可以在任何子模块本地声明一个package.json
,它们将有自己的node_modules
。
因此,您可能根本想避免常见的依赖关系,或者可能想要将常见的依赖关系存储在app
文件夹中。 Npm涵盖了这两种方法。
但是,如果您不想处理常见的依赖关系,但又担心必须在本地计算机中存储大量重复的软件包,则可能需要to checkout pnpm,它是npm的包装,它允许在本地开发机器上节省了很多空间。
答案 1 :(得分:0)
我的纱线问题几乎相同。
我已经创建了一个名为“ 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(测试和test2)中,都不包含node_modules ...
认为