如何为本地引用的节点模块指定 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()?

gyp - 如何指定链接库风格

如何为其他 Cassandra 的远程节点复制 Cassandra 的本地节点?

如何为所有节点模块自动安装@types

如何为导出函数的节点模块编写打字稿定义文件?

当其中一个是本地引用时,如何为类型约束中的引用编写生命周期?