| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| const ParserHelpers = require("./ParserHelpers"); |
| const ConstDependency = require("./dependencies/ConstDependency"); |
| const NullFactory = require("./NullFactory"); |
| |
| module.exports = class RequireJsStuffPlugin { |
| apply(compiler) { |
| compiler.hooks.compilation.tap( |
| "RequireJsStuffPlugin", |
| (compilation, { normalModuleFactory }) => { |
| compilation.dependencyFactories.set(ConstDependency, new NullFactory()); |
| compilation.dependencyTemplates.set( |
| ConstDependency, |
| new ConstDependency.Template() |
| ); |
| const handler = (parser, parserOptions) => { |
| if (parserOptions.requireJs !== undefined && !parserOptions.requireJs) |
| return; |
| |
| parser.hooks.call |
| .for("require.config") |
| .tap( |
| "RequireJsStuffPlugin", |
| ParserHelpers.toConstantDependency(parser, "undefined") |
| ); |
| parser.hooks.call |
| .for("requirejs.config") |
| .tap( |
| "RequireJsStuffPlugin", |
| ParserHelpers.toConstantDependency(parser, "undefined") |
| ); |
| |
| parser.hooks.expression |
| .for("require.version") |
| .tap( |
| "RequireJsStuffPlugin", |
| ParserHelpers.toConstantDependency( |
| parser, |
| JSON.stringify("0.0.0") |
| ) |
| ); |
| parser.hooks.expression |
| .for("requirejs.onError") |
| .tap( |
| "RequireJsStuffPlugin", |
| ParserHelpers.toConstantDependencyWithWebpackRequire( |
| parser, |
| "__webpack_require__.oe" |
| ) |
| ); |
| }; |
| normalModuleFactory.hooks.parser |
| .for("javascript/auto") |
| .tap("RequireJsStuffPlugin", handler); |
| normalModuleFactory.hooks.parser |
| .for("javascript/dynamic") |
| .tap("RequireJsStuffPlugin", handler); |
| } |
| ); |
| } |
| }; |