在Webpack中,如何使用自定义源模板构建特定模块

时间:2016-08-03 02:48:05

标签: javascript templates module webpack

我知道Webpack中的一些内部功能。关于依赖项,模板和模块构建的东西。但是,在其来源中几乎没有评论,现在没有完整的文档网站 。所以,我不能将它们全部链接起来处理我的问题。

根据我目前的要求,我需要使用自定义源模板(similar to this MultiModule in webpack)呈现特定模块。

  

注意:要明确,生成的模块的依赖关系数组不是静态的。例如,一次可能是['./a', './b', './c'],另一次可能是['./b', './c','./d']。这取决于构建之前的一些动态配置。

有关详细示例,我需要一个模块调用main.js。在构建时,需要动态生成目标依赖项(因为不确定哪些模块是依赖项):

// main.js
var a = require('./a')
var b = require('./b')
var c = require('./c')
var d = require('./d')
...

事实上,如果我只需要动态地require它们,我就可以动态构建一个入口点。

// webpack.config.js
{
    entry: {
        main: [
            './a',
            './b',
            './c',
            ...
        ]
    },
}

并且它(webpack)将生成一个可能是这样的模块:

__webpack_require__(1);
__webpack_require__(2);
__webpack_require__(3);

return __webpack_require__(4);

但我需要做更多事情

var a = __webpack_require__(1);
var b = __webpack_require__(2);
var c = __webpack_require__(3);
var d = __webpack_require__(4);
...

// do something with a,b,c,d... under my custom need
...

return somthing or nothing;

正如你们了解webpack的人一样,它非常复杂,并且难以理解并跟踪其插件(事件)层次结构

需要一些专业知识! :)

我很抱歉以前我不清楚的问题。

但是,有某种奇怪的气氛。我设立了一个值得关注和指导的赏金。某人的自由思想的答案驱使我以某种方式对不礼貌做出评论。然后一些和事佬表现出与问题或答案无关的评论。太糟糕了。

专注于那件事只会让事情变得更糟,没有任何帮助。不放手只是意味着有一个小心灵。

1 个答案:

答案 0 :(得分:0)

通常在webpack中,您只需要一个文件,也可能是文件所依赖的不同库。如果您需要main,那么webpack将根据您可以阅读的有关here的CommonJS语法来解析依赖关系。删除webpack.config.js文件中的额外要求是否解决了这个问题?例如只有以下配置:

// webpack.config.js
{
  entry: [ "./main" ],
  ...
}

听起来你并不真正了解webpack是如何工作的 - 它的想法是模仿Node的CommonJS语法如何允许你的javascript模块化并放置在单独的文件中,同时还具有高性能并且不需要大量的AJAX您的浏览器请求。如果您想了解更多关于Webpack的配置文件check out this page

作为旁注,在模块末尾返回绝对没有任何意义。如果您要导出,可以使用module.exports,但在return true文件末尾添加main.js之类的内容并不会在任何有意义的内容中被捕获。