问题标签 [dllreferenceplugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
856 浏览

javascript - Grunt、Webpack 和 DllPlugin

我无法想象如何DllPlugin/DllReferencePlugin在使用 Grunt 进行构建的同时利用 Webpack。对于那些不了解的人,DllPlugin创建一个单独的包,可以与其他包共享。它还创建一个清单文件(重要)来帮助链接。然后,DllReferencePlugin另一个包在构建时使用它来获取先前制作的DllPlugin Bundle。为此,它需要之前创建的清单文件。

在 Grunt 中,这需要在 grunt 运行之前创建清单文件,不是吗?这是一个简化的代码示例:

webpack.dll.js

webpack.app.js

如果您查看第二部分webpack.app.js,我已经评论了在咕噜声中一切似乎都失败的地方。为了使 DllReferencePlugin 工作,它需要来自 DllPlugin 的清单文件,但在 Grunt 工作流中,grunt 将在 grunt 自身初始化时加载这两个配置,导致该manifest: require('./bundles/my_dll-manifest.json')行失败,因为之前构建的 grunt 步骤webpack.dll.js尚未完成, 意义清单尚不存在。

0 投票
1 回答
2575 浏览

webpack - 通过范围模式选择 webpack dll 包

在 webpack 示例中,特别是

我们可以创建一个依赖于已经预先捆绑的库的捆绑包。手头的例子可以正常工作。也就是说,我们首先导航到examples/dll并运行node build.js以创建库。然后我们导航到examples/dll-user并运行node build.js以创建引用先前捆绑的库的最终捆绑包。

我的问题如下。假设examples/dll我们将配置文件修改为如下所示:

也就是我们添加modulebetadll中。现在我们必须拥有module. 让我们编译 dll 并继续dll-user举例。在这里,我们想做的是制作一个捆绑包,我们可以从中选择将提供的库module。让我们尝试在示例中再添加一行

在这种情况下,我希望能够使用module驻留在betadll 中的那个。不幸的是,我并不幸运。这是我尝试后得到的输出:

有没有办法指定捆绑包应该使用的库?我认为scope选项DllReferencePlugin可以解决问题,但似乎并非如此。

编辑:请注意,添加./a到 beta dll,然后require('beta/a')在示例中使用。似乎 webpack 很难弄清楚 node_modules。

0 投票
1 回答
488 浏览

javascript - 使用 Webpack 的 DllPlugin 创建共享库

我想创建一个包含所有很少更改的依赖项的核心 NPM 包,例如 Angular。由于不同的项目会使用这个 NPM 包,而 Webpack 是首选的打包和构建工具,我认为 Webpack 的 DLL 插件会是一个不错的选择。

但不知何故,消费者包无法解析使用 DLL 插件创建的库包的内容。我在这里创建了一个最小的示例https://github.com/matoilic/webpack-dll-example。核心模块只包含 Angular,然后消费者模块应该能够从那里使用 Angular。但是消费者包的构建失败并出现错误,找不到“角度”。

Module not found: Error: Can't resolve 'angular' in '.../packages/poc-module/src/application'

有谁知道问题可能是什么?

0 投票
1 回答
1560 浏览

webpack - Webpack DllReferencePlugin 不工作

我的一个项目中的DllReferencePlugin有问题(我使用的是Webpack 1.13.2)。特别是,我有 3 对由DllPlugin生成的清单和包文件,在我的主包的插件部分中,我有 3 个DllReferencePlugin部分:

当我尝试运行它时,我收到以下错误:

/node_modules/webpack/lib/DelegatedModuleFactoryPlugin.js:43 if(request && request in this.options.content) { ^

TypeError:无法使用“in”运算符在未定义中搜索“./src/main.js”

相同的配置对我的其他项目很有效,所以我认为这个错误与路径解析有关。我已经尝试了上下文和清单路径的相对路径,但它也不起作用。

0 投票
1 回答
822 浏览

webpack - Dll 插件如何与 Webpack2 一起工作?

我正在将我们的应用程序更新到 webpack2,并且使用 webpack1,我们使用了 Dll 插件,但我不确定 webpack2 是否仍然需要该插件,或者是否需要进行任何更改。为了澄清,我们在 webpack-vendor 配置文件中定义了 DllPlugin,并在主 webpack 配置文件中定义了 DllReferencePlugin。

0 投票
1 回答
524 浏览

javascript - Chrome 扩展:即使在 web_accessible_resources 中添加资源也不可用

我正在使用 React/Redux 开发一个 Chrome 扩展。为此,我正在使用 Webpack,现在我正在使用 WebPack DLLReference 插件将一些资源迁移到一个单独的文件中,以优化构建过程。

然后我需要将生成的 dll/dll.vendor.js 加载到我的弹出窗口和注入的内容中。对于弹出窗口它工作正常,但它不适用于注入的内容。

我已将其添加到清单中

该文件在那里,我什至可以使用以下路径访问它:chrome-extension:///dll/dll.vendor.js

但它不存在于注入的内容中,因为我可以看到打开开发者工具 - > 源,当然,稍后会生成丢失对象的错误。

在迁移到 DLLReferencePlugin 之前一切正常。

我的 DLL webpack 配置文件:https ://pastebin.com/z9RjRUqm

我的内容 webpack 配置文件:https ://pastebin.com/0Niw2Fqm

我收到的错误

触发错误的行:

如果我检查弹出窗口,它有相同的行,如果我在那里设置一个断点并观察它定义的变量,问题只发生在内容中。

将我的扩展工具栏注入页面的代码:content/src/index.js

知道还有什么可能是导致此问题的原因吗?有什么更好的方法来调试资源对内容环境不可用的原因?

更新

根据我最后的发现,这是因为依赖于 dll.vendor 的代码是在页面上发生注入之前执行的,但我不知道如何避免这种情况发生。

0 投票
0 回答
512 浏览

webpack - Webpack dll 参考插件给出运行时错误

我正在使用webpack DllReference插件来引用我的node_modulespolyfills从我的webpack.config,这样我每次构建项目时都不必编译它们。该插件正在正确编译并按应有的方式创建js文件Json,但是当我想运行该项目时,它function expected在我的 main.js 中给出了 js 错误,但是如果我不使用该插件,它运行得非常好。

我使用以下链接来研究 dll 参考插件的工作原理https://medium.com/@emilycoco/how-to-use-the-dll-plugin-to-speed-up-your-webpack-build-dbf330d3b13c

0 投票
1 回答
453 浏览

webpack - ASP.NET Core + Webpack - 未捕获的 ReferenceError:使用 DllReferencePlugin 时未定义供应商

在客户端渲染绝对没问题,但是一旦我启用 SSR,我就会收到以下错误:NodeInvocationException: vendor_19f7ef894c06af9bbdef is not defined。

我整理了一个为我显示此问题的示例应用程序,可以在此处找到。我也尝试了this github issue中的所有内容,但均无济于事。重现步骤如下:

克隆上面的 repo
dotnet restore
npm install
npm run webpack
dotnet run

我在 webpack.config.js 和 webpack.config.vendor.js 中都使用过 DllPlugin 设置。到目前为止,我发现让应用程序正常工作的唯一方法是从 webpack.config.js 中删除以下内容:

new webpack.DllReferencePlugin({ context: __dirname, manifest: require("./wwwroot/dist/vendor-manifest.json") })

有什么我想念的想法吗?我确定这很简单,但我无法弄清楚!

如果有帮助,我正在运行 node v8.9.3 / npm v5.6.0 / dotnet v2.1.3。

干杯

0 投票
0 回答
373 浏览

javascript - 有没有办法从 Webpack DllPlugin 供应商包中全局公开模块?

使用 Webpack 4,我正在创建一个包和一个供应商包。供应商包包含 jQuery,代码包使用“import * from jquery”引用 jquery。这完美地工作。

但是,我现在需要使用第 3 方(已经缩小)的 javascript 文件。该文件期望 jquery 在全局窗口对象上显示为“$”。我的包也需要在新的缩小文件 之后加载。

所以我有:

作为我目前的解决方法。静态 jquery 文件将 $ 对象链接到全局命名空间,然后 vendor.js 文件允许我继续在我的包中使用“导入”。

那么,我如何只加载一次 jquery,并以两种方式使用它呢?由于我加载内容的方式,这似乎与我在网上看到的大多数问题略有不同。

这是我现在配置的一个小例子:

在我的正常配置中,我使用:

因此,我可以在全局“vendor_hash”对象中找到 jquery,但无论我尝试什么,我都无法将其映射到 $(大多数插件似乎看到 $ 从未在我的任何代码中使用为捆绑提供,因此似乎不包括它)。如果我在我的“entry.js”文件中添加这样的东西,那么它仍然不起作用: