让我们假设下一个文件:
a.html
<span>A</span>
b.js
module.exports = function(){};
wrap.js
module.exports = {
html: require('./a.html'), // to be inlined
class: require('wrap-class'), // does not exists
func: require('./b'),
};
main.js
require('./wrap');
让我们假设下一个加载器:
总结loader.js
module.exports = function (source){
// I would like to get the loaded contents
// from specific childs or dynamically loaded
// require('./a.html') -> inlined or embedded
// require('class-exists') -> resolve to something depending on the
// source code `source` and the contents of the html (`a.html`)
return source; // modify the source
}
最后,我希望将main.js
作为一个捆绑包时使用:
jsonp(...,[
/* 0 */ /* ./main.js */
function(module, exports, __webpack_require__){
__webpack_require__(/*! ./wrap.js */ 1);
},
/* 1 */ /* ./wrap.js */
function(module, exports, __webpack_require__){
module.exports = {
html: '<span>A</span>',
class: 'cls-wrap cls-based-on-a-html-and-wrap-js',
func: __webpack_require_(/*! ./b.js */ 2),
}
},
/* 2 */ /* ./b.js */
function(module, exports, __webpack_require__){
module.exports = function(){};
}
]);
问题
我如何实现:
require
中当前source
内的特定wrap-loader.js
被内联或嵌入source
本身,而不会产生新功能(让我们说,因为它赢了'任何其他人都可以重复使用,在这种情况下,它可以再次内联)。在上面的示例中:a.html
。source
中的wrap-loader.js
根据其他数据(例如source
本身和a.html
的内容)动态解析模块并将其插入source
(require('wrap-class')
)。试验
this.resolveSync
和this.resolve
但它们与代码中的require('something')
没有相同的内容(例如,yaml-loader,html-loader像javascript一样加载,至少发出错误)。