From 290ab5d0717ef89745459f5746cd8e598ee8f0da Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Thu, 16 May 2019 10:18:16 -0600 Subject: [PATCH] Allow loaders to access the mode --- lib/NormalModule.js | 1 + test/configCases/loaders/mode-default/a.js | 0 test/configCases/loaders/mode-default/index.js | 3 +++ test/configCases/loaders/mode-default/loader.js | 3 +++ .../loaders/mode-default/webpack.config.js | 10 ++++++++++ test/configCases/loaders/mode-development/a.js | 0 test/configCases/loaders/mode-development/index.js | 3 +++ test/configCases/loaders/mode-development/loader.js | 3 +++ .../loaders/mode-development/webpack.config.js | 11 +++++++++++ test/configCases/loaders/mode-none/a.js | 0 test/configCases/loaders/mode-none/index.js | 3 +++ test/configCases/loaders/mode-none/loader.js | 3 +++ test/configCases/loaders/mode-none/webpack.config.js | 11 +++++++++++ test/configCases/loaders/mode-production/a.js | 0 test/configCases/loaders/mode-production/index.js | 3 +++ test/configCases/loaders/mode-production/loader.js | 3 +++ .../loaders/mode-production/webpack.config.js | 11 +++++++++++ 17 files changed, 68 insertions(+) create mode 100644 test/configCases/loaders/mode-default/a.js create mode 100644 test/configCases/loaders/mode-default/index.js create mode 100644 test/configCases/loaders/mode-default/loader.js create mode 100644 test/configCases/loaders/mode-default/webpack.config.js create mode 100644 test/configCases/loaders/mode-development/a.js create mode 100644 test/configCases/loaders/mode-development/index.js create mode 100644 test/configCases/loaders/mode-development/loader.js create mode 100644 test/configCases/loaders/mode-development/webpack.config.js create mode 100644 test/configCases/loaders/mode-none/a.js create mode 100644 test/configCases/loaders/mode-none/index.js create mode 100644 test/configCases/loaders/mode-none/loader.js create mode 100644 test/configCases/loaders/mode-none/webpack.config.js create mode 100644 test/configCases/loaders/mode-production/a.js create mode 100644 test/configCases/loaders/mode-production/index.js create mode 100644 test/configCases/loaders/mode-production/loader.js create mode 100644 test/configCases/loaders/mode-production/webpack.config.js diff --git a/lib/NormalModule.js b/lib/NormalModule.js index 3e9dc55554a..b01d9d00b4b 100644 --- a/lib/NormalModule.js +++ b/lib/NormalModule.js @@ -212,6 +212,7 @@ class NormalModule extends Module { rootContext: options.context, webpack: true, sourceMap: !!this.useSourceMap, + mode: options.mode, _module: this, _compilation: compilation, _compiler: compilation.compiler, diff --git a/test/configCases/loaders/mode-default/a.js b/test/configCases/loaders/mode-default/a.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/loaders/mode-default/index.js b/test/configCases/loaders/mode-default/index.js new file mode 100644 index 00000000000..d0a4e106af4 --- /dev/null +++ b/test/configCases/loaders/mode-default/index.js @@ -0,0 +1,3 @@ +it("provides mode to loaders when the option is omitted", function() { + expect(require("./a")).toBe("production"); +}); diff --git a/test/configCases/loaders/mode-default/loader.js b/test/configCases/loaders/mode-default/loader.js new file mode 100644 index 00000000000..0083d38fd1b --- /dev/null +++ b/test/configCases/loaders/mode-default/loader.js @@ -0,0 +1,3 @@ +module.exports = function(source) { + return `module.exports = "${this.mode}";`; +}; diff --git a/test/configCases/loaders/mode-default/webpack.config.js b/test/configCases/loaders/mode-default/webpack.config.js new file mode 100644 index 00000000000..87ef526b932 --- /dev/null +++ b/test/configCases/loaders/mode-default/webpack.config.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + rules: [ + { + test: /a\.js$/, + use: "./loader" + } + ] + } +}; diff --git a/test/configCases/loaders/mode-development/a.js b/test/configCases/loaders/mode-development/a.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/loaders/mode-development/index.js b/test/configCases/loaders/mode-development/index.js new file mode 100644 index 00000000000..6fd77efcc1c --- /dev/null +++ b/test/configCases/loaders/mode-development/index.js @@ -0,0 +1,3 @@ +it("provides mode to loaders when the option is 'development'", function() { + expect(require("./a")).toBe("development"); +}); diff --git a/test/configCases/loaders/mode-development/loader.js b/test/configCases/loaders/mode-development/loader.js new file mode 100644 index 00000000000..0083d38fd1b --- /dev/null +++ b/test/configCases/loaders/mode-development/loader.js @@ -0,0 +1,3 @@ +module.exports = function(source) { + return `module.exports = "${this.mode}";`; +}; diff --git a/test/configCases/loaders/mode-development/webpack.config.js b/test/configCases/loaders/mode-development/webpack.config.js new file mode 100644 index 00000000000..5d7d3bf9b71 --- /dev/null +++ b/test/configCases/loaders/mode-development/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + mode: "development", + module: { + rules: [ + { + test: /a\.js$/, + use: "./loader" + } + ] + } +}; diff --git a/test/configCases/loaders/mode-none/a.js b/test/configCases/loaders/mode-none/a.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/loaders/mode-none/index.js b/test/configCases/loaders/mode-none/index.js new file mode 100644 index 00000000000..ffecdce0b49 --- /dev/null +++ b/test/configCases/loaders/mode-none/index.js @@ -0,0 +1,3 @@ +it("provides mode to loaders when the option is 'none'", function() { + expect(require("./a")).toBe("none"); +}); diff --git a/test/configCases/loaders/mode-none/loader.js b/test/configCases/loaders/mode-none/loader.js new file mode 100644 index 00000000000..0083d38fd1b --- /dev/null +++ b/test/configCases/loaders/mode-none/loader.js @@ -0,0 +1,3 @@ +module.exports = function(source) { + return `module.exports = "${this.mode}";`; +}; diff --git a/test/configCases/loaders/mode-none/webpack.config.js b/test/configCases/loaders/mode-none/webpack.config.js new file mode 100644 index 00000000000..ba5a8fb0aa6 --- /dev/null +++ b/test/configCases/loaders/mode-none/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + mode: "none", + module: { + rules: [ + { + test: /a\.js$/, + use: "./loader" + } + ] + } +}; diff --git a/test/configCases/loaders/mode-production/a.js b/test/configCases/loaders/mode-production/a.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/configCases/loaders/mode-production/index.js b/test/configCases/loaders/mode-production/index.js new file mode 100644 index 00000000000..c6ccd5be92e --- /dev/null +++ b/test/configCases/loaders/mode-production/index.js @@ -0,0 +1,3 @@ +it("provides mode to loaders when the option is 'production'", function() { + expect(require("./a")).toBe("production"); +}); diff --git a/test/configCases/loaders/mode-production/loader.js b/test/configCases/loaders/mode-production/loader.js new file mode 100644 index 00000000000..0083d38fd1b --- /dev/null +++ b/test/configCases/loaders/mode-production/loader.js @@ -0,0 +1,3 @@ +module.exports = function(source) { + return `module.exports = "${this.mode}";`; +}; diff --git a/test/configCases/loaders/mode-production/webpack.config.js b/test/configCases/loaders/mode-production/webpack.config.js new file mode 100644 index 00000000000..20f3afadadc --- /dev/null +++ b/test/configCases/loaders/mode-production/webpack.config.js @@ -0,0 +1,11 @@ +module.exports = { + mode: "production", + module: { + rules: [ + { + test: /a\.js$/, + use: "./loader" + } + ] + } +};