【发布时间】:2017-05-15 10:52:19
【问题描述】:
我是一名学习 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 目录下。
我可以使用一个通用的、单独的 node_modules 目录来避免重复文件并节省磁盘空间吗? 我可以在 ex.js 下存储 js 依赖项吗? /home/user/javascript/modules 文件夹?
评论1:我不想以root身份执行npm并使用npm -g install!
评论 2:我也不想创建符号链接。
你能帮帮我吗?
编辑 我做了什么:
- 我为 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 模块在哪里。
更新 正如您在 cmets 中看到的那样,我尝试以多种不同的方式解决我的问题,但没有任何成功。对我来说,webpack 似乎不支持我想做的事情。好难过:(
就是这样。如果有人有任何可行的、好的和完整的解决方案,请与我们分享。谢谢。
【问题讨论】:
-
更新答案..希望它能解决你的问题
-
我想实现完全相同的目标。我最终切换到pnpm。虽然它使用符号链接和硬链接来避免磁盘上的重复,但似乎工作得很好。
-
How can I make multiple projects share node_modules directory? 的可能重复项。另外,你是说 ES6 吗?
标签: javascript java npm npm-install node-modules