gpt4 book ai didi

javascript - 在多个项目之间共享 node_modules 目录

转载 作者:搜寻专家 更新时间:2023-11-01 02:21:18 26 4
gpt4 key购买 nike

我是一名学习 EC6 的 Java 开发人员。我使用 npm 下载 JavaScript 包并使用 webpack 创建最终的 bundle.js 文件。

我有一个很好的项目文件夹,其中包含带有 java 文件的 java 模块,我想将 EC6 JavaScript 文件添加到我的 web 模块中。我使用 maven 来管理 java jar 依赖库。

这是我的文件夹结构:

my-project
|-common-module
|-ejb-module
|-web-module-1
| |-src
| |-main
| |-java
| |-com.a.b
| |-Hello.java
| |-webapp
| |-index.jsp
| |-bundle.js
| |-package.json
| |-webpack.config.js
| |-WEB-INF
| |-node_modules <-- I WANT THIS FOLDER TO BE MOVED AWAY FROM HERE
| |-app <-- react + ec6 javascript files
| |-action
| |-components
| |-...
|-web-module-2
|-<same structure then under web-module-1>

当我在 my-project/web-module-1/src/main/webapp 文件夹中执行 npm install... 命令时,然后一个名为的新目录node_modules 由 npm 在 webapp 目录下创建。此文件夹包含大量文件。

我的问题是,当我处理我的第二个 Web 项目并执行相同的 npm install... 命令时,会创建第二个 node_modules 目录,其中包含相同的内容在 my-project/web-module-2/src/main/webapp 目录下。

我可以使用一个公共(public)的、独立的 node_modules 目录来避免重复的文件并节省磁盘空间吗?我可以在ex下存储js依赖吗? /home/user/javascript/modules 文件夹?

评论 1:我不想以 root 身份执行 npm,而是使用 npm -g install!

评论 2:我也不想创建符号链接(symbolic link)。

你能帮帮我吗?


编辑我做了什么:

  • 我为 JS 包创建了一个新文件夹:/home/user/javascript-modules
  • 已将 package.json 文件复制到 /home/user/javascript-modules
  • npm install --prefix/home/user/javascript-modules

之后必要的 JS 模块被复制到我的 javascript-modules/node-modules 目录。不错!

但是当我尝试执行 webpack 时,我得到了一个缺少模块的错误:

  • cd my-project/web-module-1/src/main/webapp
  • ./home/user/javascript-modules/node_modules/.bin/webpack

结果:

Hash: a6bf1a0d210729a54be9
Version: webpack 1.14.0
Time: 39ms

ERROR in Entry module not found: Error: Cannot resolve module 'babel-loader' in /home/user/java/intellijmy-project/web-module-1/src/main/webapp

评论:我的 webpack.config.js 文件包含一行内容:loader: 'babel-loader'

有没有办法为 webpack 指定“类路径”?我的意思是告诉 webpack 模块在哪里。


更新正如您在评论中看到的那样,我尝试以多种不同方式解决我的问题,但均未成功。对我来说,webpack 似乎不支持我想做的事情。好伤心:(

就是这样。如果有人有任何有效的、好的和完整的解决方案,请与我们分享。谢谢。

最佳答案

使用 pnpm 代替 npm。

来自 the pnpm project's website :

pnpm uses hard links and symlinks to save one version of a module only ever once on a disk. When using npm or Yarn for example, if you have 100 projects using the same version of lodash, you will have 100 copies of lodash on disk. With pnpm, lodash will be saved in a single place on the disk and a hard link will put it into the node_modules where it should be installed.

  1. 要在命令窗口中使用 npm 安装,请使用:

     npm install -g pnpm
  2. 要更新您现有的软件包安装(和所有子目录),请使用:

     pnpm install --recursive

或者,使用递归安装的快捷命令:

    pnpm i -r

在通常使用 npm 的任何地方使用 pnpm。 (当 pnpm 不支持时,此命令安全地回退到 npm 函数。

关于javascript - 在多个项目之间共享 node_modules 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41408065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com