23 lines
1.0 KiB
JavaScript
23 lines
1.0 KiB
JavaScript
const loaderUtils = require('loader-utils');
|
|
|
|
module.exports.pitch = function pitch(remainingRequest) {
|
|
const { globals = undefined, pre = [], post = [] } = loaderUtils.getOptions(this) || {};
|
|
|
|
// HACK: NamedModulesPlugin overwrites existing modules when requesting the same module via
|
|
// different loaders, so we need to circumvent this by appending a suffix to make the name unique
|
|
// See https://github.com/webpack/webpack/issues/4613#issuecomment-325178346 for details
|
|
if (this._module && this._module.userRequest) {
|
|
this._module.userRequest = `include-loader!${this._module.userRequest}`;
|
|
}
|
|
|
|
return [
|
|
...(globals
|
|
? Object.keys(globals).map((key) => `self[${JSON.stringify(key)}] = ${globals[key]};`)
|
|
: []
|
|
),
|
|
...pre.map((include) => `require(${loaderUtils.stringifyRequest(this, include)});`),
|
|
`module.exports = require(${loaderUtils.stringifyRequest(this, `!!${remainingRequest}`)});`,
|
|
...post.map((include) => `require(${loaderUtils.stringifyRequest(this, include)});`),
|
|
].join('\n');
|
|
};
|