首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为webpack提供"DLL“、”扩展“或”插件“机制?

如何为webpack提供"DLL“、”扩展“或”插件“机制?
EN

Stack Overflow用户
提问于 2017-01-08 08:41:48
回答 1查看 53关注 0票数 1

我们在编译时运行webpack,但希望在运行时允许自定义扩展。插件的位置是已知的,但不知道插件的数量或名称。这些只能在运行时确定。此外,这些插件可以有自己的依赖关系。webpack是如何做到这一点的?

我可以离开那个角落使用RequireJS,但在我看来,Webpack -> RequireJS的迁移是一件完全或根本不存在的事情(例如,因为它们都定义了window.require)。

背景:这在RequireJS中很好:我们发布了一个用于在客户硬件上安装的产品(例如Jira、Jenkins或Owncloud)。在某些安装中,客户使用文档化的API编写自己的仪表板小部件。我们有一个REST调用,它列出了存在哪些/opt/custom/extensions/dashboard/*.js。其中每一个都可以有自己的依赖关系,例如:

代码语言:javascript
复制
define([
    'css!./custom-widget-A.css',
], function () {
    // bla bla
}

因此,考虑到我有['custom-widget-A.js','custom-widget-B.js'],如何在运行时加载这些扩展,包括它们的依赖项?

我可以更改所有的自定义扩展,也可以要求用户在添加自定义扩展时运行/usr/bin/updateCustomExtensions

我不想要node_modules (包括)。webpack)在机器上,但我们可以,如果那是唯一的办法。

我们需要避免机器上原始的、不受限制的资源,只需要避免我们的小型资源的捆绑(出于法律原因-不是我的决定)。

那么:如何编写/usr/bin/updateCustomExtensionsfunction loadModules

代码语言:javascript
复制
// I'm guessing the API needs to be async, since we only know the plugins
// at run-time
function loadDashboardExtensions(callback) {
    // Load them
    getCustomListFromREST(function (modules) {
        loadModules(modules, function () {
            // Caller code that uses extensions
            callback();
        });
    });
}

function loadModules () {
    ????
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 10:07:48

我们仍然可以使用RequireJS。RequireJS同时设置了window.requirewindow.requirejswindow.require是webpack写的,而window.requirejs不是。

因此,上面的function loadModules可以替换为requirejs,如下所示:

代码语言:javascript
复制
function loadDashboardExtensions(callback) {
    // Load them
    getCustomListFromREST(function (modules) {
        requirejs(modules, callback);
    });
}

我喜欢答案的代码比问题的短。

如果需要向加载的模块提供webpack代码中的依赖项,则可以通过其导出/定义的函数将其提供给各个模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41530942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档