使用全局node_modules

时间:2017-06-22 10:44:16

标签: node.js npm webpack

我想要的太多了:使用webpack捆绑angularjs应用程序,但是请参阅位于同一文件系统上不同位置的node_modules文件夹。

  • 对于这种情况,让我说我的角应用程序的源代码是 位于“/ source / code”文件夹中。
  • 对于外部节点模块, 位于“/ global / npm / App1 / node_module”
  • 申请名称:“App1”

到目前为止我做了什么:

  1. 使用“npm install -g”安装角度应用程序App1,因此节点模块将位于App1内,位于全局npm文件夹/ global / npm / App1
  2. 然后我尝试从/ source / code捆绑App1。这是行不通的,因为我缺少位于/ global / npm / App1 / node_module中的节点模块。
  3. 如何引用位于/ global / npm / App1 / node_module中的节点模块? 我是否必须在webpack.config.js中使用absolut路径?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的Webpack中的功能是resolve-modules。这允许您添加可以使用的其他文件夹,而无需在其中添加路径,几乎就像它们在node_modules文件夹中一样。

https://webpack.js.org/configuration/resolve/#resolve-modules

例如

const globalNpm = path.join(__dirname, 'global', 'npm', 'App1', 'node_module'),

resolve: {
        modules: [
            globalNpm
        ]
    }

我发现使用path.join使你的webpack代码更有可能跨平台(windows,mac等)工作。上面示例中的路径可能有误,因为我可以从您的问题中获得您的文件夹结构。但是上面应该允许您直接从全局npm文件夹中获取模块。

请将以上功能主要用于大型项目和可以移动或在其他地方重复使用的文件,这样就不需要了

const module = require('../../../a-folder/../../fancycomponent')

另一方面 - 全局安装NPM软件包仅在一个应用程序中使用不是正常模式,可能导致问题,尤其是本地和CI / CD管道上的权限和版本控制。

相关问题