webpack 3.6.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +716 -716
  3. package/bin/convert-argv.js +1 -1
  4. package/bin/webpack.js +6 -0
  5. package/buildin/.eslintrc +7 -7
  6. package/buildin/amd-define.js +3 -3
  7. package/buildin/amd-options.js +2 -2
  8. package/buildin/global.js +21 -21
  9. package/buildin/harmony-module.js +24 -24
  10. package/buildin/module.js +22 -22
  11. package/buildin/system.js +7 -7
  12. package/hot/.eslintrc +9 -9
  13. package/hot/dev-server.js +53 -53
  14. package/hot/emitter.js +2 -2
  15. package/hot/log-apply-result.js +38 -38
  16. package/hot/log.js +44 -44
  17. package/hot/only-dev-server.js +71 -71
  18. package/hot/poll.js +34 -34
  19. package/hot/signal.js +51 -51
  20. package/lib/APIPlugin.js +45 -45
  21. package/lib/AsyncDependenciesBlock.js +43 -43
  22. package/lib/AsyncDependencyToInitialChunkWarning.js +21 -0
  23. package/lib/AutomaticPrefetchPlugin.js +36 -36
  24. package/lib/BasicEvaluatedExpression.js +203 -203
  25. package/lib/CaseSensitiveModulesWarning.js +49 -49
  26. package/lib/Chunk.js +3 -0
  27. package/lib/ChunkRenderError.js +24 -24
  28. package/lib/ChunkTemplate.js +36 -36
  29. package/lib/CompatibilityPlugin.js +57 -57
  30. package/lib/Compilation.js +158 -51
  31. package/lib/Compiler.js +523 -523
  32. package/lib/ConstPlugin.js +60 -60
  33. package/lib/ContextExclusionPlugin.js +17 -0
  34. package/lib/ContextModule.js +431 -431
  35. package/lib/ContextModuleFactory.js +14 -5
  36. package/lib/ContextReplacementPlugin.js +111 -111
  37. package/lib/DefinePlugin.js +123 -123
  38. package/lib/DelegatedModule.js +98 -92
  39. package/lib/DelegatedModuleFactoryPlugin.js +59 -59
  40. package/lib/DelegatedPlugin.js +30 -30
  41. package/lib/DependenciesBlockVariable.js +51 -51
  42. package/lib/DllEntryPlugin.js +37 -37
  43. package/lib/DllModule.js +58 -58
  44. package/lib/DllModuleFactory.js +20 -20
  45. package/lib/DllPlugin.js +38 -38
  46. package/lib/DllReferencePlugin.js +62 -62
  47. package/lib/DynamicEntryPlugin.js +59 -59
  48. package/lib/EntryModuleNotFoundError.js +22 -22
  49. package/lib/EntryOptionPlugin.js +31 -31
  50. package/lib/EnvironmentPlugin.js +50 -50
  51. package/lib/ErrorHelpers.js +31 -31
  52. package/lib/EvalDevToolModulePlugin.js +22 -22
  53. package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
  54. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
  55. package/lib/EvalSourceMapDevToolPlugin.js +32 -32
  56. package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
  57. package/lib/ExtendedAPIPlugin.js +47 -47
  58. package/lib/ExternalModule.js +7 -0
  59. package/lib/ExternalModuleFactoryPlugin.js +91 -91
  60. package/lib/ExternalsPlugin.js +21 -21
  61. package/lib/FlagDependencyExportsPlugin.js +101 -101
  62. package/lib/FunctionModulePlugin.js +24 -24
  63. package/lib/FunctionModuleTemplatePlugin.js +7 -3
  64. package/lib/HashedModuleIdsPlugin.js +42 -42
  65. package/lib/HotUpdateChunkTemplate.js +31 -31
  66. package/lib/IgnorePlugin.js +69 -69
  67. package/lib/JsonpExportMainTemplatePlugin.js +37 -37
  68. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
  69. package/lib/JsonpMainTemplate.runtime.js +2 -1
  70. package/lib/JsonpMainTemplatePlugin.js +2 -0
  71. package/lib/JsonpTemplatePlugin.js +21 -21
  72. package/lib/LibManifestPlugin.js +63 -63
  73. package/lib/LibraryTemplatePlugin.js +92 -92
  74. package/lib/LoaderOptionsPlugin.js +36 -36
  75. package/lib/LoaderTargetPlugin.js +19 -19
  76. package/lib/MemoryOutputFileSystem.js +5 -5
  77. package/lib/ModuleBuildError.js +42 -42
  78. package/lib/ModuleDependencyError.js +22 -22
  79. package/lib/ModuleDependencyWarning.js +22 -22
  80. package/lib/ModuleError.js +24 -24
  81. package/lib/ModuleFilenameHelpers.js +162 -162
  82. package/lib/ModuleNotFoundError.js +26 -26
  83. package/lib/ModuleParseError.js +1 -1
  84. package/lib/ModuleReason.js +50 -50
  85. package/lib/ModuleTemplate.js +23 -23
  86. package/lib/ModuleWarning.js +24 -24
  87. package/lib/MovedToPluginWarningPlugin.js +21 -21
  88. package/lib/MultiCompiler.js +164 -164
  89. package/lib/MultiEntryPlugin.js +39 -39
  90. package/lib/MultiModuleFactory.js +19 -19
  91. package/lib/MultiStats.js +79 -79
  92. package/lib/MultiWatching.js +32 -32
  93. package/lib/NamedChunksPlugin.js +30 -30
  94. package/lib/NamedModulesPlugin.js +27 -27
  95. package/lib/NewWatchingPlugin.js +15 -15
  96. package/lib/NoEmitOnErrorsPlugin.js +22 -22
  97. package/lib/NoErrorsPlugin.js +29 -29
  98. package/lib/NodeStuffPlugin.js +97 -97
  99. package/lib/NormalModuleReplacementPlugin.js +45 -45
  100. package/lib/NullFactory.js +12 -12
  101. package/lib/OptionsApply.js +10 -10
  102. package/lib/Parser.js +65 -34
  103. package/lib/ParserHelpers.js +85 -85
  104. package/lib/PrefetchPlugin.js +31 -31
  105. package/lib/ProgressPlugin.js +192 -192
  106. package/lib/ProvidePlugin.js +55 -55
  107. package/lib/RawModule.js +54 -54
  108. package/lib/RequestShortener.js +63 -63
  109. package/lib/RequireJsStuffPlugin.js +31 -31
  110. package/lib/RuleSet.js +444 -444
  111. package/lib/SetVarMainTemplatePlugin.js +41 -41
  112. package/lib/SingleEntryPlugin.js +35 -35
  113. package/lib/SizeFormatHelpers.js +18 -18
  114. package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
  115. package/lib/Stats.js +27 -8
  116. package/lib/UmdMainTemplatePlugin.js +1 -1
  117. package/lib/UnsupportedFeatureWarning.js +21 -21
  118. package/lib/UseStrictPlugin.js +34 -34
  119. package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
  120. package/lib/WatchIgnorePlugin.js +49 -49
  121. package/lib/WebpackError.js +11 -11
  122. package/lib/WebpackOptionsDefaulter.js +129 -129
  123. package/lib/WebpackOptionsValidationError.js +196 -196
  124. package/lib/compareLocations.js +36 -36
  125. package/lib/dependencies/AMDDefineDependency.js +142 -142
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -1
  127. package/lib/dependencies/AMDPlugin.js +119 -119
  128. package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
  129. package/lib/dependencies/AMDRequireContextDependency.js +0 -9
  130. package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
  131. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
  132. package/lib/dependencies/AMDRequireDependency.js +67 -67
  133. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  134. package/lib/dependencies/CommonJsRequireContextDependency.js +0 -10
  135. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  136. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
  137. package/lib/dependencies/ConstDependency.js +32 -32
  138. package/lib/dependencies/ContextDependency.js +20 -0
  139. package/lib/dependencies/ContextDependencyHelpers.js +71 -71
  140. package/lib/dependencies/ContextElementDependency.js +21 -21
  141. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  142. package/lib/dependencies/DelegatedExportsDependency.js +33 -33
  143. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  144. package/lib/dependencies/DllEntryDependency.js +20 -20
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
  146. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +14 -2
  147. package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
  148. package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
  150. package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
  151. package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
  152. package/lib/dependencies/ImportContextDependency.js +0 -10
  153. package/lib/dependencies/ImportDependenciesBlock.js +17 -17
  154. package/lib/dependencies/ImportEagerContextDependency.js +22 -22
  155. package/lib/dependencies/ImportLazyContextDependency.js +22 -22
  156. package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
  157. package/lib/dependencies/ImportParserPlugin.js +89 -89
  158. package/lib/dependencies/ImportPlugin.js +60 -60
  159. package/lib/dependencies/ImportWeakContextDependency.js +22 -22
  160. package/lib/dependencies/LoaderDependency.js +18 -18
  161. package/lib/dependencies/LoaderPlugin.js +60 -60
  162. package/lib/dependencies/LocalModule.js +23 -23
  163. package/lib/dependencies/LocalModuleDependency.js +24 -24
  164. package/lib/dependencies/LocalModulesHelpers.js +46 -46
  165. package/lib/dependencies/ModuleDependency.js +23 -23
  166. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  167. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  168. package/lib/dependencies/MultiEntryDependency.js +20 -20
  169. package/lib/dependencies/NullDependency.js +24 -24
  170. package/lib/dependencies/PrefetchDependency.js +18 -18
  171. package/lib/dependencies/RequireContextDependency.js +26 -26
  172. package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
  173. package/lib/dependencies/RequireContextPlugin.js +96 -96
  174. package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
  175. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
  176. package/lib/dependencies/RequireEnsureDependency.js +38 -38
  177. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  178. package/lib/dependencies/RequireEnsurePlugin.js +40 -40
  179. package/lib/dependencies/RequireHeaderDependency.js +26 -26
  180. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
  181. package/lib/dependencies/RequireIncludePlugin.js +33 -33
  182. package/lib/dependencies/RequireResolveContextDependency.js +0 -10
  183. package/lib/dependencies/RequireResolveDependency.js +22 -22
  184. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
  185. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
  186. package/lib/dependencies/SingleEntryDependency.js +18 -18
  187. package/lib/dependencies/SystemPlugin.js +44 -44
  188. package/lib/dependencies/UnsupportedDependency.js +23 -23
  189. package/lib/dependencies/WebpackMissingModule.js +18 -18
  190. package/lib/dependencies/getFunctionExpression.js +44 -44
  191. package/lib/formatLocation.js +54 -54
  192. package/lib/node/NodeChunkTemplatePlugin.js +27 -27
  193. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  194. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
  195. package/lib/node/NodeMainTemplate.runtime.js +24 -24
  196. package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
  197. package/lib/node/NodeOutputFileSystem.js +22 -22
  198. package/lib/node/NodeSourcePlugin.js +88 -88
  199. package/lib/node/NodeTargetPlugin.js +15 -15
  200. package/lib/node/NodeTemplatePlugin.js +27 -27
  201. package/lib/node/NodeWatchFileSystem.js +72 -72
  202. package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
  203. package/lib/optimize/CommonsChunkPlugin.js +40 -19
  204. package/lib/optimize/ConcatenatedModule.js +27 -24
  205. package/lib/optimize/DedupePlugin.js +15 -15
  206. package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
  207. package/lib/optimize/LimitChunkCountPlugin.js +59 -59
  208. package/lib/optimize/MinChunkSizePlugin.js +65 -65
  209. package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
  210. package/lib/optimize/UglifyJsPlugin.js +9 -9
  211. package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
  212. package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
  213. package/lib/performance/NoAsyncChunksWarning.js +20 -20
  214. package/lib/performance/SizeLimitsPlugin.js +102 -102
  215. package/lib/prepareOptions.js +29 -29
  216. package/lib/removeAndDo.js +15 -15
  217. package/lib/util/Queue.js +42 -0
  218. package/lib/util/Semaphore.js +32 -32
  219. package/lib/util/identifier.js +38 -38
  220. package/lib/validateSchema.js +66 -66
  221. package/lib/web/WebEnvironmentPlugin.js +18 -18
  222. package/lib/webpack.js +1 -0
  223. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
  224. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
  225. package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
  226. package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
  227. package/package.json +1 -1
  228. package/schemas/ajv.absolutePath.js +29 -29
  229. package/schemas/webpackOptionsSchema.json +69 -0
@@ -1,30 +1,30 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class NamedChunksPlugin {
8
-
9
- static defaultNameResolver(chunk) {
10
- return chunk.name || null;
11
- }
12
-
13
- constructor(nameResolver) {
14
- this.nameResolver = nameResolver || NamedChunksPlugin.defaultNameResolver;
15
- }
16
-
17
- apply(compiler) {
18
- compiler.plugin("compilation", (compilation) => {
19
- compilation.plugin("before-chunk-ids", (chunks) => {
20
- chunks.forEach((chunk) => {
21
- if(chunk.id === null) {
22
- chunk.id = this.nameResolver(chunk);
23
- }
24
- });
25
- });
26
- });
27
- }
28
- }
29
-
30
- module.exports = NamedChunksPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class NamedChunksPlugin {
8
+
9
+ static defaultNameResolver(chunk) {
10
+ return chunk.name || null;
11
+ }
12
+
13
+ constructor(nameResolver) {
14
+ this.nameResolver = nameResolver || NamedChunksPlugin.defaultNameResolver;
15
+ }
16
+
17
+ apply(compiler) {
18
+ compiler.plugin("compilation", (compilation) => {
19
+ compilation.plugin("before-chunk-ids", (chunks) => {
20
+ chunks.forEach((chunk) => {
21
+ if(chunk.id === null) {
22
+ chunk.id = this.nameResolver(chunk);
23
+ }
24
+ });
25
+ });
26
+ });
27
+ }
28
+ }
29
+
30
+ module.exports = NamedChunksPlugin;
@@ -1,27 +1,27 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class NamedModulesPlugin {
8
- constructor(options) {
9
- this.options = options || {};
10
- }
11
-
12
- apply(compiler) {
13
- compiler.plugin("compilation", (compilation) => {
14
- compilation.plugin("before-module-ids", (modules) => {
15
- modules.forEach((module) => {
16
- if(module.id === null && module.libIdent) {
17
- module.id = module.libIdent({
18
- context: this.options.context || compiler.options.context
19
- });
20
- }
21
- });
22
- });
23
- });
24
- }
25
- }
26
-
27
- module.exports = NamedModulesPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class NamedModulesPlugin {
8
+ constructor(options) {
9
+ this.options = options || {};
10
+ }
11
+
12
+ apply(compiler) {
13
+ compiler.plugin("compilation", (compilation) => {
14
+ compilation.plugin("before-module-ids", (modules) => {
15
+ modules.forEach((module) => {
16
+ if(module.id === null && module.libIdent) {
17
+ module.id = module.libIdent({
18
+ context: this.options.context || compiler.options.context
19
+ });
20
+ }
21
+ });
22
+ });
23
+ });
24
+ }
25
+ }
26
+
27
+ module.exports = NamedModulesPlugin;
@@ -1,15 +1,15 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class NewWatchingPlugin {
8
- apply(compiler) {
9
- compiler.plugin("compilation", function(compilation) {
10
- compilation.warnings.push(new Error("The 'NewWatchingPlugin' is no longer necessary (now default)"));
11
- });
12
- }
13
- }
14
-
15
- module.exports = NewWatchingPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class NewWatchingPlugin {
8
+ apply(compiler) {
9
+ compiler.plugin("compilation", function(compilation) {
10
+ compilation.warnings.push(new Error("The 'NewWatchingPlugin' is no longer necessary (now default)"));
11
+ });
12
+ }
13
+ }
14
+
15
+ module.exports = NewWatchingPlugin;
@@ -1,22 +1,22 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class NoEmitOnErrorsPlugin {
8
- apply(compiler) {
9
- compiler.plugin("should-emit", (compilation) => {
10
- if(compilation.errors.length > 0)
11
- return false;
12
- });
13
- compiler.plugin("compilation", (compilation) => {
14
- compilation.plugin("should-record", () => {
15
- if(compilation.errors.length > 0)
16
- return false;
17
- });
18
- });
19
- }
20
- }
21
-
22
- module.exports = NoEmitOnErrorsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class NoEmitOnErrorsPlugin {
8
+ apply(compiler) {
9
+ compiler.plugin("should-emit", (compilation) => {
10
+ if(compilation.errors.length > 0)
11
+ return false;
12
+ });
13
+ compiler.plugin("compilation", (compilation) => {
14
+ compilation.plugin("should-record", () => {
15
+ if(compilation.errors.length > 0)
16
+ return false;
17
+ });
18
+ });
19
+ }
20
+ }
21
+
22
+ module.exports = NoEmitOnErrorsPlugin;
@@ -1,29 +1,29 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- let deprecationReported = false;
8
-
9
- class NoErrorsPlugin {
10
- apply(compiler) {
11
- compiler.plugin("should-emit", (compilation) => {
12
- if(!deprecationReported) {
13
- compilation.warnings.push("webpack: Using NoErrorsPlugin is deprecated.\n" +
14
- "Use NoEmitOnErrorsPlugin instead.\n");
15
- deprecationReported = true;
16
- }
17
- if(compilation.errors.length > 0)
18
- return false;
19
- });
20
- compiler.plugin("compilation", (compilation) => {
21
- compilation.plugin("should-record", () => {
22
- if(compilation.errors.length > 0)
23
- return false;
24
- });
25
- });
26
- }
27
- }
28
-
29
- module.exports = NoErrorsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ let deprecationReported = false;
8
+
9
+ class NoErrorsPlugin {
10
+ apply(compiler) {
11
+ compiler.plugin("should-emit", (compilation) => {
12
+ if(!deprecationReported) {
13
+ compilation.warnings.push("webpack: Using NoErrorsPlugin is deprecated.\n" +
14
+ "Use NoEmitOnErrorsPlugin instead.\n");
15
+ deprecationReported = true;
16
+ }
17
+ if(compilation.errors.length > 0)
18
+ return false;
19
+ });
20
+ compiler.plugin("compilation", (compilation) => {
21
+ compilation.plugin("should-record", () => {
22
+ if(compilation.errors.length > 0)
23
+ return false;
24
+ });
25
+ });
26
+ }
27
+ }
28
+
29
+ module.exports = NoErrorsPlugin;
@@ -1,97 +1,97 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const path = require("path");
8
- const ParserHelpers = require("./ParserHelpers");
9
- const ConstDependency = require("./dependencies/ConstDependency");
10
-
11
- const NullFactory = require("./NullFactory");
12
-
13
- class NodeStuffPlugin {
14
- constructor(options) {
15
- this.options = options;
16
- }
17
-
18
- apply(compiler) {
19
- const options = this.options;
20
- compiler.plugin("compilation", (compilation, params) => {
21
- compilation.dependencyFactories.set(ConstDependency, new NullFactory());
22
- compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
23
-
24
- params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
25
-
26
- if(parserOptions.node === false)
27
- return;
28
-
29
- let localOptions = options;
30
- if(parserOptions.node)
31
- localOptions = Object.assign({}, localOptions, parserOptions.node);
32
-
33
- function setConstant(expressionName, value) {
34
- parser.plugin(`expression ${expressionName}`, function() {
35
- this.state.current.addVariable(expressionName, JSON.stringify(value));
36
- return true;
37
- });
38
- }
39
-
40
- function setModuleConstant(expressionName, fn) {
41
- parser.plugin(`expression ${expressionName}`, function() {
42
- this.state.current.addVariable(expressionName, JSON.stringify(fn(this.state.module)));
43
- return true;
44
- });
45
- }
46
- const context = compiler.context;
47
- if(localOptions.__filename === "mock") {
48
- setConstant("__filename", "/index.js");
49
- } else if(localOptions.__filename) {
50
- setModuleConstant("__filename", module => path.relative(context, module.resource));
51
- }
52
- parser.plugin("evaluate Identifier __filename", function(expr) {
53
- if(!this.state.module) return;
54
- const resource = this.state.module.resource;
55
- const i = resource.indexOf("?");
56
- return ParserHelpers.evaluateToString(i < 0 ? resource : resource.substr(0, i))(expr);
57
- });
58
- if(localOptions.__dirname === "mock") {
59
- setConstant("__dirname", "/");
60
- } else if(localOptions.__dirname) {
61
- setModuleConstant("__dirname", module => path.relative(context, module.context));
62
- }
63
- parser.plugin("evaluate Identifier __dirname", function(expr) {
64
- if(!this.state.module) return;
65
- return ParserHelpers.evaluateToString(this.state.module.context)(expr);
66
- });
67
- parser.plugin("expression require.main", ParserHelpers.toConstantDependency("__webpack_require__.c[__webpack_require__.s]"));
68
- parser.plugin(
69
- "expression require.extensions",
70
- ParserHelpers.expressionIsUnsupported("require.extensions is not supported by webpack. Use a loader instead.")
71
- );
72
- parser.plugin("expression module.loaded", ParserHelpers.toConstantDependency("module.l"));
73
- parser.plugin("expression module.id", ParserHelpers.toConstantDependency("module.i"));
74
- parser.plugin("expression module.exports", function() {
75
- const module = this.state.module;
76
- const isHarmony = module.meta && module.meta.harmonyModule;
77
- if(!isHarmony)
78
- return true;
79
- });
80
- parser.plugin("evaluate Identifier module.hot", ParserHelpers.evaluateToIdentifier("module.hot", false));
81
- parser.plugin("expression module", function() {
82
- const module = this.state.module;
83
- const isHarmony = module.meta && module.meta.harmonyModule;
84
- let moduleJsPath = path.join(__dirname, "..", "buildin", isHarmony ? "harmony-module.js" : "module.js");
85
- if(module.context) {
86
- moduleJsPath = path.relative(this.state.module.context, moduleJsPath);
87
- if(!/^[A-Z]:/i.test(moduleJsPath)) {
88
- moduleJsPath = `./${moduleJsPath.replace(/\\/g, "/")}`;
89
- }
90
- }
91
- return ParserHelpers.addParsedVariableToModule(this, "module", `require(${JSON.stringify(moduleJsPath)})(module)`);
92
- });
93
- });
94
- });
95
- }
96
- }
97
- module.exports = NodeStuffPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const path = require("path");
8
+ const ParserHelpers = require("./ParserHelpers");
9
+ const ConstDependency = require("./dependencies/ConstDependency");
10
+
11
+ const NullFactory = require("./NullFactory");
12
+
13
+ class NodeStuffPlugin {
14
+ constructor(options) {
15
+ this.options = options;
16
+ }
17
+
18
+ apply(compiler) {
19
+ const options = this.options;
20
+ compiler.plugin("compilation", (compilation, params) => {
21
+ compilation.dependencyFactories.set(ConstDependency, new NullFactory());
22
+ compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
23
+
24
+ params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
25
+
26
+ if(parserOptions.node === false)
27
+ return;
28
+
29
+ let localOptions = options;
30
+ if(parserOptions.node)
31
+ localOptions = Object.assign({}, localOptions, parserOptions.node);
32
+
33
+ function setConstant(expressionName, value) {
34
+ parser.plugin(`expression ${expressionName}`, function() {
35
+ this.state.current.addVariable(expressionName, JSON.stringify(value));
36
+ return true;
37
+ });
38
+ }
39
+
40
+ function setModuleConstant(expressionName, fn) {
41
+ parser.plugin(`expression ${expressionName}`, function() {
42
+ this.state.current.addVariable(expressionName, JSON.stringify(fn(this.state.module)));
43
+ return true;
44
+ });
45
+ }
46
+ const context = compiler.context;
47
+ if(localOptions.__filename === "mock") {
48
+ setConstant("__filename", "/index.js");
49
+ } else if(localOptions.__filename) {
50
+ setModuleConstant("__filename", module => path.relative(context, module.resource));
51
+ }
52
+ parser.plugin("evaluate Identifier __filename", function(expr) {
53
+ if(!this.state.module) return;
54
+ const resource = this.state.module.resource;
55
+ const i = resource.indexOf("?");
56
+ return ParserHelpers.evaluateToString(i < 0 ? resource : resource.substr(0, i))(expr);
57
+ });
58
+ if(localOptions.__dirname === "mock") {
59
+ setConstant("__dirname", "/");
60
+ } else if(localOptions.__dirname) {
61
+ setModuleConstant("__dirname", module => path.relative(context, module.context));
62
+ }
63
+ parser.plugin("evaluate Identifier __dirname", function(expr) {
64
+ if(!this.state.module) return;
65
+ return ParserHelpers.evaluateToString(this.state.module.context)(expr);
66
+ });
67
+ parser.plugin("expression require.main", ParserHelpers.toConstantDependency("__webpack_require__.c[__webpack_require__.s]"));
68
+ parser.plugin(
69
+ "expression require.extensions",
70
+ ParserHelpers.expressionIsUnsupported("require.extensions is not supported by webpack. Use a loader instead.")
71
+ );
72
+ parser.plugin("expression module.loaded", ParserHelpers.toConstantDependency("module.l"));
73
+ parser.plugin("expression module.id", ParserHelpers.toConstantDependency("module.i"));
74
+ parser.plugin("expression module.exports", function() {
75
+ const module = this.state.module;
76
+ const isHarmony = module.meta && module.meta.harmonyModule;
77
+ if(!isHarmony)
78
+ return true;
79
+ });
80
+ parser.plugin("evaluate Identifier module.hot", ParserHelpers.evaluateToIdentifier("module.hot", false));
81
+ parser.plugin("expression module", function() {
82
+ const module = this.state.module;
83
+ const isHarmony = module.meta && module.meta.harmonyModule;
84
+ let moduleJsPath = path.join(__dirname, "..", "buildin", isHarmony ? "harmony-module.js" : "module.js");
85
+ if(module.context) {
86
+ moduleJsPath = path.relative(this.state.module.context, moduleJsPath);
87
+ if(!/^[A-Z]:/i.test(moduleJsPath)) {
88
+ moduleJsPath = `./${moduleJsPath.replace(/\\/g, "/")}`;
89
+ }
90
+ }
91
+ return ParserHelpers.addParsedVariableToModule(this, "module", `require(${JSON.stringify(moduleJsPath)})(module)`);
92
+ });
93
+ });
94
+ });
95
+ }
96
+ }
97
+ module.exports = NodeStuffPlugin;
@@ -1,45 +1,45 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const path = require("path");
8
-
9
- class NormalModuleReplacementPlugin {
10
- constructor(resourceRegExp, newResource) {
11
- this.resourceRegExp = resourceRegExp;
12
- this.newResource = newResource;
13
- }
14
-
15
- apply(compiler) {
16
- const resourceRegExp = this.resourceRegExp;
17
- const newResource = this.newResource;
18
- compiler.plugin("normal-module-factory", (nmf) => {
19
- nmf.plugin("before-resolve", (result, callback) => {
20
- if(!result) return callback();
21
- if(resourceRegExp.test(result.request)) {
22
- if(typeof newResource === "function") {
23
- newResource(result);
24
- } else {
25
- result.request = newResource;
26
- }
27
- }
28
- return callback(null, result);
29
- });
30
- nmf.plugin("after-resolve", (result, callback) => {
31
- if(!result) return callback();
32
- if(resourceRegExp.test(result.resource)) {
33
- if(typeof newResource === "function") {
34
- newResource(result);
35
- } else {
36
- result.resource = path.resolve(path.dirname(result.resource), newResource);
37
- }
38
- }
39
- return callback(null, result);
40
- });
41
- });
42
- }
43
- }
44
-
45
- module.exports = NormalModuleReplacementPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const path = require("path");
8
+
9
+ class NormalModuleReplacementPlugin {
10
+ constructor(resourceRegExp, newResource) {
11
+ this.resourceRegExp = resourceRegExp;
12
+ this.newResource = newResource;
13
+ }
14
+
15
+ apply(compiler) {
16
+ const resourceRegExp = this.resourceRegExp;
17
+ const newResource = this.newResource;
18
+ compiler.plugin("normal-module-factory", (nmf) => {
19
+ nmf.plugin("before-resolve", (result, callback) => {
20
+ if(!result) return callback();
21
+ if(resourceRegExp.test(result.request)) {
22
+ if(typeof newResource === "function") {
23
+ newResource(result);
24
+ } else {
25
+ result.request = newResource;
26
+ }
27
+ }
28
+ return callback(null, result);
29
+ });
30
+ nmf.plugin("after-resolve", (result, callback) => {
31
+ if(!result) return callback();
32
+ if(resourceRegExp.test(result.resource)) {
33
+ if(typeof newResource === "function") {
34
+ newResource(result);
35
+ } else {
36
+ result.resource = path.resolve(path.dirname(result.resource), newResource);
37
+ }
38
+ }
39
+ return callback(null, result);
40
+ });
41
+ });
42
+ }
43
+ }
44
+
45
+ module.exports = NormalModuleReplacementPlugin;
@@ -1,12 +1,12 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class NullFactory {
8
- create(data, callback) {
9
- return callback();
10
- }
11
- }
12
- module.exports = NullFactory;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class NullFactory {
8
+ create(data, callback) {
9
+ return callback();
10
+ }
11
+ }
12
+ module.exports = NullFactory;
@@ -1,10 +1,10 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class OptionsApply {
8
- process(options, compiler) {}
9
- }
10
- module.exports = OptionsApply;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class OptionsApply {
8
+ process(options, compiler) {}
9
+ }
10
+ module.exports = OptionsApply;