从webpack中的远程URL静态捆绑

时间:2018-02-23 19:44:14

标签: webpack

这似乎是一个非常简单的问题并且已经搜索了答案,但所有答案都是关于动态加载远程网址。

我需要捆绑在Github中作为原始(非NPM)源发布的库。我想webpack下载并将这些文件包含在我的包中。在本地缓存文件一段时间将是一个奖励。

例如,我希望能够写下:

const mylib=require("http://www.espruino.com/modules/ADNS5050.min.js");

让webpack下载并静态包含此js文件。该捆绑包将被推送到一个没有任何网络的嵌入式设备!

由于

3 个答案:

答案 0 :(得分:1)

正如我在另一篇文章中所说:我一直在寻找解决方案,并且大多数提案都基于外部,这对我而言无效。我使用了一个单独的JS文件,该文件负责将所需文件下载到本地目录中。然后,WebPack会扫描该目录,并将下载的文件与应用程序捆绑在一起。

在此处查看解决方案:https://stackoverflow.com/a/62603539/8650621

答案 1 :(得分:0)

webpack-require-http插件应该符合您的需求。

或尝试scriptjs

var $script = require("scriptjs");
$script("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() {
  $('body').html('It works!')
});

答案 2 :(得分:0)

我设法使用externals中的函数来完成基本工作,就像这样...

npm install --save-dev fetch

... webpack config ...

var fetchUrl = require('fetch').fetchUrl;
module.exports = {
...
    externals: function(context, request, callback) {
        if ( request.indexOf('http') === 0 ) {
            fetchUrl(request, function(error, meta, body){
                if (error) {
                    throw error;
                }
                callback(null, body.toString());
            });
            return;
        }
        switch (request) {
            // these are provided on the target platform
            case 'PCD8544':
            case 'Flash':
                return callback(null, 'require("'+request+'")');
        }
        // default
        callback();
    },
...
}

运行webpack --watch时需要添加一些基本缓存!