include.js 990 B

1234567891011121314151617181920
  1. const loaderUtils = require('loader-utils');
  2. module.exports.pitch = function pitch(remainingRequest) {
  3. const { globals = undefined, pre = [], post = [] } = loaderUtils.getOptions(this) || {};
  4. // HACK: NamedModulesPlugin overwrites existing modules when requesting the same module via
  5. // different loaders, so we need to circumvent this by appending a suffix to make the name unique
  6. // See https://github.com/webpack/webpack/issues/4613#issuecomment-325178346 for details
  7. this._module.userRequest = `include-loader!${this._module.userRequest}`;
  8. return [
  9. ...(globals
  10. ? Object.keys(globals).map((key) => `self[${JSON.stringify(key)}] = ${globals[key]};`)
  11. : []
  12. ),
  13. ...pre.map((include) => `require(${loaderUtils.stringifyRequest(this, include)});`),
  14. `module.exports = require(${loaderUtils.stringifyRequest(this, `!!${remainingRequest}`)});`,
  15. ...post.map((include) => `require(${loaderUtils.stringifyRequest(this, include)});`),
  16. ].join('\n');
  17. };