如何为本地引用的节点模块指定 node_modules 文件夹
Posted
技术标签:
【中文标题】如何为本地引用的节点模块指定 node_modules 文件夹【英文标题】:How to specify node_modules folder for locally referenced node module 【发布时间】:2017-02-18 10:21:39 【问题描述】:我们需要为本地引用的节点指定 node_modules 文件夹 位于相对于当前文件夹的外部文件夹中的模块 应用程序文件夹。
我们有一个场景,我们在另一个客户端应用程序中引用外部公共模块的 js 文件,但是在最终构建中被两个引用的相同节点模块被复制。我们尝试使用 webpack.optimize.DedupePlugin() 没有任何成功。
目录结构如下:
-
我们在本地磁盘上有一个名为“common”的私有 npm 模块,然后我们有一个名为“app”的项目文件夹。
两个文件夹在目录结构中位于同一级别,并且位于同一根目录下。
“app”本身是一个 npm 模块,并且有一个带有自己的 node_modules 文件夹的 package.json 文件。
|—root
|— common/node_modules
|— app/node_modules
我们希望通过配置通过 npm 或 web pack 指定一种方式,让应用程序从其指定的 node_modules 路径解析引用,而不是引用任何其他 node_modules 位置,包括公共模块。
【问题讨论】:
【参考方案1】:您可以使用 npm 链接或只是一个简单的符号链接。做这样的事情:
cd root/app (your app directory)
npm link ../common
或
cd root/app (your app directory)
ln -s ../common node_modules/common
【讨论】:
npm link
正在工作,但我必须在我的wepback.resolve.fallback
中指定app/node_modules
文件夹才能使其工作,这似乎不对。难道没有更好的方法吗?以上是关于如何为本地引用的节点模块指定 node_modules 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
如何为仅包含对下一个节点的引用的节点实现 HashCode()?