我有应用程序和模块的存储库。模块包括在package.json
的应用程序中,如:
"application-module": "file:../modules/application-module"
在yarn install
之后,依赖加入了node_modules
。
我想制作基于模块的应用程序。 app
文件夹重现根模块。其他模块如admin-panel-module
,account-module
应该在modules
文件夹中。因此,app里面可能有node_modules
,但也有modules
文件夹的模块。这些模块将由git subtree
从另一个回购添加。所以,这种方式我可以独立发展
有什么方法可以避免添加和使用本地目录?
在任何node / 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文件夹中。
所以基本上你可以解决你的问题,确保每个孩子都有自己的package.json
及其依赖。
但是,您可以将常见依赖项放在根app
文件夹中。如果您的所有项目都使用lodash
,则可以将lodash
依赖项放在add的package_json
中。在yarn
文件夹中执行app
之后,lodash
包将安装在应用程序的node_modules
中。
之后,如果您:
require('lodash');
在任何一个孩子中,他们会在应用程序的lodash
文件夹中搜索node_modules
,如果他们在自己的lodash
中找不到node_modules
。
如果你没有root node_modules
,你仍然可以在任何子模块的本地声明一个package.json
,它们将有自己的node_modules
。
所以也许你可能想要避免常见的依赖关系,或者你想在app
文件夹中存储公共依赖项。 Npm你有两种方式。
但是,如果你不想处理常见的依赖关系,但是担心必须在本地机器中存储大量重复的包,你可能需要to checkout pnpm,它是npm的包装器,它允许在本地节省大量空间开发机器。