【问题标题】:Organize multiple Webpack entry file dependencies整理多个 Webpack 入口文件依赖
【发布时间】:2022-01-16 08:42:01
【问题描述】:

如何使用 webpack 不同的入口文件/配置在第三部分包(例如vendor/ 子目录)中组织具有自己依赖关系的 JS 可重用组件?

说明:

我有以下带有入口点和组件的结构

app/
  assets/
    index.js
  package.json
  webpack.config.js

vendor/
  my-utils-bundle/
    assets/
      components/
        MyMath.js
    package.json
    webpack.config.js

在我的可包含在不同的入口文件/webpack 配置中 MyMath.js 组件中有node_modules/ 对包的依赖,例如mathjs 带有以下行:

import { pi, pow, round, sqrt } from 'mathjs'

....some code below...

附: mathjs 这个包中提供的依赖包 (vendor/my-utils-bundle/package.json)

然后当我运行yarn devapp/assets/index.js 中编译我的资产时,出现以下错误:

"./vendor/my-utils-bundle/assets/components/MyMath.js" contains a reference to the file "mathjs".
This file can not be found, please check it for typos or update it if the file got moved.

问题:

如何在app/assets/index.js 以及其他“捆绑包”(例如vendor/my-other-bundle)中将这个MyMath.js 组件用作可包含类?

看起来我也可以在 app/package.json 中安装这个 mathjs 依赖项,但似乎在应用程序级别我应该考虑捆绑 JS 依赖项,这听起来不是最好的解决方案。

【问题讨论】:

    标签: javascript symfony webpack ecmascript-6 node-modules


    【解决方案1】:

    这是一个open question,自 Encore 推出以来一直在进行。甚至更早,鉴于根据best practices for bundles,不应分发第三方依赖项,并留给应用程序管理。

    话虽如此,there is at least one bundle (foxy) 试图解决这个问题,方法是在安装/更新包时挂接到 composer 命令并合并依赖项。

    来自它的 README(重点是我的):

    Foxy 只专注于验证、添加、 更新和删除定义文件中的依赖关系 资产包,同时恢复项目状态,以及PHP 如果 NPM 或 Yarn 因错误而终止,则依赖项。

    Foxy 检索所有 Composer 依赖项的列表以注入 文件 package.json 中的资产依赖项

    [...]

    鉴于 Foxy 不操纵任何资产 依赖关系,更不用说版本约束,这允许 NPM 或 Yarn 解决资产依赖关系,无需任何中介

    【讨论】:

    • 感谢参考,没看到这个问题!
    猜你喜欢
    • 2019-08-10
    • 2015-12-07
    • 2015-05-12
    • 2014-10-06
    • 1970-01-01
    • 2018-04-21
    • 2016-03-03
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多