node.js - 使用全局 node_modules 将 AngularJS 与 Webpack 捆绑在一起

标签 node.js npm webpack

我也想要归档:将 angularjs 应用程序与 webpack 捆绑在一起,但引用位于同一文件系统上不同位置的 node_modules 文件夹。

<小时/>
  • 对于这种情况,假设我的角度应用程序的源代码是 位于文件夹“/source/code”中。
  • 对于外部 Node 模块, 位于“/global/npm/App1/node_module”
  • 应用程序名称:“App1”
<小时/>

到目前为止我做了什么:

  1. 使用“npm install -g”安装了角度应用程序 App1,因此 Node 模块将位于 App1 内的全局 npm 文件夹/global/npm/App1
  2. 然后我尝试从/source/code 捆绑 App1。这不起作用,因为我缺少位于/global/npm/App1/node_module 中的 Node 模块。

如何引用位于/global/npm/App1/node_module 中的 Node 模块? 我是否必须在 webpack.config.js 中使用我需要的每个模块的绝对路径?

最佳答案

我认为您正在寻找的 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 管道上的权限和版本控制方面。

关于node.js - 使用全局 node_modules 将 AngularJS 与 Webpack 捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697125/

相关文章:

javascript - 如何在 rails 中使用 webpack 和 bootstrap-sass-loader 加载 Bootstrap

javascript - 带有 jest 和 webpack 的文件加载器给了我一个

node.js - 使用 Node fs.createWriteStream 生成日志,但它正在写入重复项

javascript - 依赖node.js模块状态可以吗?

node.js - 锁定作业在议程 Node.js 中如何工作?

node.js - 标准_init_linux.go :190: exec user process caused "exec format error" The command '/bin/sh -c npm install' returned a non-zero code: 1

node.js - 如何在断开连接的计算机上安装 npm 模块,确保所有依赖项

javascript - Next.js 和 Webpack 内联 Javascript 或 CSS 资源

node.js - 使用 Sinon-Chai 时测试失败显示 "Error: timeout of 2000ms exceeded"

node.js - 注册表 REST API 最佳实践