如果将程序包放置在本地,如何避免将其添加到node_modules

时间:2019-03-28 14:30:38

标签: npm yarnpkg

我有包含应用程序和模块的存储库。模块由package.json包含在应用程序中,例如:

"application-module": "file:../modules/application-module"

yarn install之后,该依存关系已添加到node_modules

我想制作基于模块的应用程序。 app文件夹复制根模块。 admin-panel-moduleaccount-module之类的其他模块应位于modules文件夹中。因此,应用程序内部可能有node_modules,但模块中还有modules文件夹。这些模块将由另一个存储库中的git subtree添加。所以,这样我就可以独立发展

有什么方法可以避免添加和使用本地目录?

2 个答案:

答案 0 :(得分:1)

多个node_modules和package.json

在任何节点/ 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 ...

认为