在多个React应用程序之间共享相同的node_modules文件夹

问题描述 投票:0回答:2

我尝试通过将该文件夹放置在所有 React 应用程序的父目录中来在几个 React 应用程序之间共享相同的“node_modules”文件夹,根据 React 文档,这是可能的。但是“npm start”说:错误!生命周期。 请帮忙...

我使用

npx create-react-app app_name
命令创建了 4 个 React 应用程序。 并从每个应用程序中删除除一个之外的所有 node_modules 文件夹,并将其放置如下:

my_projects
    node_modules
    app_1
        src
        package.json
    app_2
        src
        package.json
    app_3
        src
        package.json
    app_4
        src
        package.json

有关此的 React 文档:https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders

node.js reactjs node-modules
2个回答
0
投票

您可以使用符号或软链接。通过使用符号链接,我们可以为所有使用相同版本的 npm 包版本的所有项目提供单个

node_module

添加完所有内容后

cd app_1 (for all app_2,app_3,app_4)

sudo ln -s /my_projects/node_modules node_modules

npm start or yarn start

之后

node_module
将在所有目录上创建符号链接,如下

/my_projects
  node_modules
  package.json
  app_1
    node_modules   (for all its just a symbolic soft link to  /my_projects/node_modules)
    src
    package.json   (clone of /my_projects/package.json for all bellow)
  app_2
    node_modules
    src
    package.json
  app_3
    node_modules
    src
    package.json
  app_4
    node_modules
    src
    package.json

使用此功能,您可以为所有子项目维护一个

node_module
。另请检查包管理器 https://pnpm.io/ 了解高级用例

编辑1:您可以通过

删除这些链接
rm node_modules

0
投票

我今天遇到了同样的问题,我很感激@Vimal Raj 给了我这个想法。 对于那些想知道这里有相同解决方案但在 Windows 中的人:

我想将我的 React 应用程序排列在文件夹

design-patterns
下,以便文件夹
node_modules
仅使用一次

<DIR>          node_modules (the main node_modules directory)
<DIR>          controlled-components
<DIR>          custom-hooks
<DIR>          recursive-components
<DIR>          split-screen-components

创建项目时,进入项目的根目录(例如:custom-hooks),不要说“

npm install
”,而是创建一个指向已存在的“node_modules”目录的“软链接”。 在 Windows 上,您可以使用以下命令在 CMD
从子项目的文件夹
中创建软链接 mklink \J node_modules ..\node_modules

结果应该是:

<JUNCTION> node_modules (shortcut to the node_modules in the parent directory) package-lock.json package.json <DIR> public server.js <DIR> src

我尝试使用 GUI 方法(上下文菜单中的 
Create shortcut

按钮)实现相同的目标,但该方法失败了。

    

© www.soinside.com 2019 - 2024. All rights reserved.