webpack 1.13.3 → 1.14.0

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 (212) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +310 -310
  3. package/buildin/amd-define.js +1 -1
  4. package/buildin/amd-options.js +1 -1
  5. package/buildin/module.js +10 -10
  6. package/hot/dev-server.js +63 -63
  7. package/hot/log-apply-result.js +25 -25
  8. package/hot/only-dev-server.js +77 -77
  9. package/hot/poll.js +37 -37
  10. package/hot/signal.js +65 -65
  11. package/lib/APIPlugin.js +49 -49
  12. package/lib/AbstractPlugin.js +22 -22
  13. package/lib/AmdMainTemplatePlugin.js +43 -43
  14. package/lib/ArrayMap.js +50 -50
  15. package/lib/AsyncDependenciesBlock.js +39 -39
  16. package/lib/AutomaticPrefetchPlugin.js +35 -35
  17. package/lib/BannerPlugin.js +34 -34
  18. package/lib/BasicEvaluatedExpression.js +140 -140
  19. package/lib/CachePlugin.js +43 -43
  20. package/lib/CaseSensitiveModulesWarning.js +16 -16
  21. package/lib/Chunk.js +252 -252
  22. package/lib/ChunkRenderError.js +17 -17
  23. package/lib/ChunkTemplate.js +37 -37
  24. package/lib/CompatibilityPlugin.js +42 -42
  25. package/lib/Compilation.js +891 -891
  26. package/lib/Compiler.js +407 -407
  27. package/lib/ConcatSource.js +5 -5
  28. package/lib/ConstPlugin.js +54 -54
  29. package/lib/ContextModule.js +130 -130
  30. package/lib/ContextModuleFactory.js +132 -132
  31. package/lib/ContextReplacementPlugin.js +93 -93
  32. package/lib/CriticalDependenciesWarning.js +24 -24
  33. package/lib/DefinePlugin.js +126 -126
  34. package/lib/DelegatedModule.js +69 -69
  35. package/lib/DelegatedModuleFactoryPlugin.js +51 -51
  36. package/lib/DelegatedPlugin.js +21 -21
  37. package/lib/DependenciesBlock.js +57 -57
  38. package/lib/DependenciesBlockVariable.js +41 -41
  39. package/lib/Dependency.js +54 -54
  40. package/lib/DllEntryPlugin.js +32 -32
  41. package/lib/DllModule.js +55 -55
  42. package/lib/DllModuleFactory.js +18 -18
  43. package/lib/DllPlugin.js +30 -30
  44. package/lib/DllReferencePlugin.js +26 -26
  45. package/lib/EntryModuleNotFoundError.js +15 -15
  46. package/lib/EntryOptionPlugin.js +28 -28
  47. package/lib/EnvironmentPlugin.js +28 -28
  48. package/lib/EvalDevToolModulePlugin.js +17 -17
  49. package/lib/EvalDevToolModuleTemplatePlugin.js +29 -29
  50. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +68 -68
  51. package/lib/EvalSourceMapDevToolPlugin.js +25 -25
  52. package/lib/ExtendedAPIPlugin.js +45 -45
  53. package/lib/ExternalModule.js +89 -89
  54. package/lib/ExternalModuleFactoryPlugin.js +86 -86
  55. package/lib/ExternalsPlugin.js +16 -16
  56. package/lib/FunctionModulePlugin.js +18 -18
  57. package/lib/FunctionModuleTemplatePlugin.js +39 -39
  58. package/lib/HotModuleReplacement.runtime.js +486 -486
  59. package/lib/HotModuleReplacementPlugin.js +223 -223
  60. package/lib/HotUpdateChunkTemplate.js +28 -28
  61. package/lib/IgnorePlugin.js +32 -32
  62. package/lib/JsonpChunkTemplatePlugin.js +26 -26
  63. package/lib/JsonpExportMainTemplatePlugin.js +28 -28
  64. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +26 -26
  65. package/lib/JsonpMainTemplate.runtime.js +56 -56
  66. package/lib/JsonpMainTemplatePlugin.js +162 -162
  67. package/lib/JsonpTemplatePlugin.js +17 -17
  68. package/lib/LibManifestPlugin.js +49 -49
  69. package/lib/LibraryTemplatePlugin.js +77 -77
  70. package/lib/LoaderTargetPlugin.js +16 -16
  71. package/lib/MainTemplate.js +169 -169
  72. package/lib/MemoryOutputFileSystem.js +5 -5
  73. package/lib/Module.js +116 -116
  74. package/lib/ModuleFilenameHelpers.js +157 -157
  75. package/lib/ModuleNotFoundError.js +17 -17
  76. package/lib/ModuleParseError.js +26 -26
  77. package/lib/ModuleParserHelpers.js +21 -21
  78. package/lib/ModuleReason.js +9 -9
  79. package/lib/ModuleTemplate.js +23 -23
  80. package/lib/MovedToPluginWarningPlugin.js +17 -17
  81. package/lib/MultiCompiler.js +166 -166
  82. package/lib/MultiEntryPlugin.js +31 -31
  83. package/lib/MultiModule.js +71 -71
  84. package/lib/MultiModuleFactory.js +18 -18
  85. package/lib/NamedModulesPlugin.js +21 -21
  86. package/lib/NewWatchingPlugin.js +12 -12
  87. package/lib/NoErrorsPlugin.js +18 -18
  88. package/lib/NodeStuffPlugin.js +99 -99
  89. package/lib/NormalModule.js +322 -322
  90. package/lib/NormalModuleFactory.js +171 -171
  91. package/lib/NormalModuleReplacementPlugin.js +40 -40
  92. package/lib/NullFactory.js +10 -10
  93. package/lib/OldWatchingPlugin.js +14 -14
  94. package/lib/OptionsApply.js +10 -10
  95. package/lib/OriginalSource.js +5 -5
  96. package/lib/Parser.js +938 -938
  97. package/lib/PrefetchPlugin.js +25 -25
  98. package/lib/ProgressPlugin.js +80 -80
  99. package/lib/ProvidePlugin.js +48 -48
  100. package/lib/RawModule.js +65 -65
  101. package/lib/RawSource.js +5 -5
  102. package/lib/RecordIdsPlugin.js +130 -130
  103. package/lib/RequestShortener.js +56 -56
  104. package/lib/RequireJsStuffPlugin.js +38 -38
  105. package/lib/ResolverPlugin.js +34 -34
  106. package/lib/SetVarMainTemplatePlugin.js +36 -36
  107. package/lib/SingleEntryPlugin.js +24 -24
  108. package/lib/Source.js +5 -5
  109. package/lib/SourceMapDevToolModuleOptionsPlugin.js +33 -33
  110. package/lib/SourceMapDevToolPlugin.js +168 -168
  111. package/lib/SourceMapSource.js +5 -5
  112. package/lib/Stats.js +732 -732
  113. package/lib/Template.js +119 -119
  114. package/lib/TemplatedPathPlugin.js +111 -111
  115. package/lib/UmdMainTemplatePlugin.js +146 -146
  116. package/lib/UnsupportedFeatureWarning.js +14 -14
  117. package/lib/WarnCaseSensitiveModulesPlugin.js +27 -27
  118. package/lib/WatchIgnorePlugin.js +45 -45
  119. package/lib/WebpackOptionsApply.js +376 -376
  120. package/lib/WebpackOptionsDefaulter.js +112 -112
  121. package/lib/dependencies/AMDDefineDependency.js +63 -63
  122. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +240 -240
  123. package/lib/dependencies/AMDPlugin.js +115 -115
  124. package/lib/dependencies/AMDRequireArrayDependency.js +34 -34
  125. package/lib/dependencies/AMDRequireContextDependency.js +18 -18
  126. package/lib/dependencies/AMDRequireDependenciesBlock.js +25 -25
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +145 -145
  128. package/lib/dependencies/AMDRequireDependency.js +64 -64
  129. package/lib/dependencies/AMDRequireItemDependency.js +17 -17
  130. package/lib/dependencies/CommonJsPlugin.js +93 -93
  131. package/lib/dependencies/CommonJsRequireContextDependency.js +18 -18
  132. package/lib/dependencies/CommonJsRequireDependency.js +17 -17
  133. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +91 -91
  134. package/lib/dependencies/ConstDependency.js +29 -29
  135. package/lib/dependencies/ContextDependency.js +24 -24
  136. package/lib/dependencies/ContextDependencyHelpers.js +34 -34
  137. package/lib/dependencies/ContextDependencyTemplateAsId.js +22 -22
  138. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +31 -31
  139. package/lib/dependencies/ContextElementDependency.js +17 -17
  140. package/lib/dependencies/DelegatedSourceDependency.js +14 -14
  141. package/lib/dependencies/DepBlockHelpers.js +41 -41
  142. package/lib/dependencies/DllEntryDependency.js +17 -17
  143. package/lib/dependencies/LabeledExportsDependency.js +21 -21
  144. package/lib/dependencies/LabeledModuleDependency.js +36 -36
  145. package/lib/dependencies/LabeledModuleDependencyParserPlugin.js +76 -76
  146. package/lib/dependencies/LabeledModulesPlugin.js +26 -26
  147. package/lib/dependencies/LoaderDependency.js +14 -14
  148. package/lib/dependencies/LoaderPlugin.js +61 -61
  149. package/lib/dependencies/LocalModule.js +19 -19
  150. package/lib/dependencies/LocalModuleDependency.js +23 -23
  151. package/lib/dependencies/LocalModulesHelpers.js +43 -43
  152. package/lib/dependencies/ModuleDependency.js +20 -20
  153. package/lib/dependencies/ModuleDependencyTemplateAsId.js +22 -22
  154. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +22 -22
  155. package/lib/dependencies/ModuleHotAcceptDependency.js +18 -18
  156. package/lib/dependencies/ModuleHotDeclineDependency.js +18 -18
  157. package/lib/dependencies/MultiEntryDependency.js +16 -16
  158. package/lib/dependencies/NullDependency.js +17 -17
  159. package/lib/dependencies/NullDependencyTemplate.js +8 -8
  160. package/lib/dependencies/PrefetchDependency.js +14 -14
  161. package/lib/dependencies/RequireContextDependency.js +17 -17
  162. package/lib/dependencies/RequireContextDependencyParserPlugin.js +33 -33
  163. package/lib/dependencies/RequireContextPlugin.js +64 -64
  164. package/lib/dependencies/RequireEnsureDependenciesBlock.js +20 -20
  165. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +66 -66
  166. package/lib/dependencies/RequireEnsureDependency.js +29 -29
  167. package/lib/dependencies/RequireEnsureItemDependency.js +16 -16
  168. package/lib/dependencies/RequireEnsurePlugin.js +38 -38
  169. package/lib/dependencies/RequireHeaderDependency.js +25 -25
  170. package/lib/dependencies/RequireIncludeDependency.js +25 -25
  171. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +18 -18
  172. package/lib/dependencies/RequireIncludePlugin.js +31 -31
  173. package/lib/dependencies/RequireResolveContextDependency.js +18 -18
  174. package/lib/dependencies/RequireResolveDependency.js +17 -17
  175. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +69 -69
  176. package/lib/dependencies/RequireResolveHeaderDependency.js +25 -25
  177. package/lib/dependencies/SingleEntryDependency.js +14 -14
  178. package/lib/dependencies/TemplateArgumentDependency.js +26 -26
  179. package/lib/dependencies/WebpackMissingModule.js +23 -23
  180. package/lib/dependencies/getFunctionExpression.js +43 -43
  181. package/lib/node/NodeChunkTemplatePlugin.js +22 -22
  182. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  183. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +24 -24
  184. package/lib/node/NodeMainTemplate.runtime.js +20 -20
  185. package/lib/node/NodeMainTemplateAsync.runtime.js +34 -34
  186. package/lib/node/NodeMainTemplatePlugin.js +164 -164
  187. package/lib/node/NodeOutputFileSystem.js +17 -17
  188. package/lib/node/NodeSourcePlugin.js +85 -75
  189. package/lib/node/NodeTargetPlugin.js +12 -12
  190. package/lib/node/NodeTemplatePlugin.js +21 -21
  191. package/lib/node/NodeWatchFileSystem.js +65 -65
  192. package/lib/node/OldNodeWatchFileSystem.js +265 -265
  193. package/lib/optimize/AggressiveMergingPlugin.js +115 -115
  194. package/lib/optimize/CommonsChunkPlugin.js +178 -178
  195. package/lib/optimize/DedupePlugin.js +227 -227
  196. package/lib/optimize/FlagIncludedChunksPlugin.js +24 -24
  197. package/lib/optimize/LimitChunkCountPlugin.js +55 -55
  198. package/lib/optimize/MergeDuplicateChunksPlugin.js +30 -30
  199. package/lib/optimize/MinChunkSizePlugin.js +61 -61
  200. package/lib/optimize/OccurenceOrderPlugin.js +5 -5
  201. package/lib/optimize/OccurrenceOrderPlugin.js +91 -91
  202. package/lib/optimize/RemoveEmptyChunksPlugin.js +19 -19
  203. package/lib/optimize/RemoveParentModulesPlugin.js +50 -50
  204. package/lib/optimize/UglifyJsPlugin.js +146 -146
  205. package/lib/removeAndDo.js +13 -13
  206. package/lib/web/WebEnvironmentPlugin.js +16 -16
  207. package/lib/webpack.js +113 -113
  208. package/lib/webpack.web.js +27 -27
  209. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +26 -26
  210. package/lib/webworker/WebWorkerMainTemplatePlugin.js +78 -78
  211. package/lib/webworker/WebWorkerTemplatePlugin.js +15 -15
  212. package/package.json +4 -4
@@ -1,376 +1,376 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- var OptionsApply = require("./OptionsApply");
6
-
7
- var LoaderTargetPlugin = require("./LoaderTargetPlugin");
8
- var FunctionModulePlugin = require("./FunctionModulePlugin");
9
- var EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
10
- var SourceMapDevToolPlugin = require("./SourceMapDevToolPlugin");
11
- var EvalSourceMapDevToolPlugin = require("./EvalSourceMapDevToolPlugin");
12
-
13
- var EntryOptionPlugin = require("./EntryOptionPlugin");
14
- var RecordIdsPlugin = require("./RecordIdsPlugin");
15
-
16
- var APIPlugin = require("./APIPlugin");
17
- var ConstPlugin = require("./ConstPlugin");
18
- var RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
19
- var NodeStuffPlugin = require("./NodeStuffPlugin");
20
- var CompatibilityPlugin = require("./CompatibilityPlugin");
21
- var DefinePlugin = require("./DefinePlugin");
22
-
23
- var MovedToPluginWarningPlugin = require("./MovedToPluginWarningPlugin");
24
- var TemplatedPathPlugin = require("./TemplatedPathPlugin");
25
- var WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
26
-
27
- var LoaderPlugin = require("./dependencies/LoaderPlugin");
28
- var CommonJsPlugin = require("./dependencies/CommonJsPlugin");
29
- var AMDPlugin = require("./dependencies/AMDPlugin");
30
- var RequireContextPlugin = require("./dependencies/RequireContextPlugin");
31
- var RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
32
- var RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
33
-
34
- var RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
35
- var RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
36
- var MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
37
- var FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
38
-
39
- var UnsafeCachePlugin = require("enhanced-resolve/lib/UnsafeCachePlugin");
40
- var ModulesInDirectoriesPlugin = require("enhanced-resolve/lib/ModulesInDirectoriesPlugin");
41
- var ModulesInRootPlugin = require("enhanced-resolve/lib/ModulesInRootPlugin");
42
- var ModuleTemplatesPlugin = require("enhanced-resolve/lib/ModuleTemplatesPlugin");
43
- var ModuleAsFilePlugin = require("enhanced-resolve/lib/ModuleAsFilePlugin");
44
- var ModuleAsDirectoryPlugin = require("enhanced-resolve/lib/ModuleAsDirectoryPlugin");
45
- var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
46
- var DirectoryDefaultFilePlugin = require("enhanced-resolve/lib/DirectoryDefaultFilePlugin");
47
- var DirectoryDescriptionFilePlugin = require("enhanced-resolve/lib/DirectoryDescriptionFilePlugin");
48
- var DirectoryDescriptionFileFieldAliasPlugin = require("enhanced-resolve/lib/DirectoryDescriptionFileFieldAliasPlugin");
49
- var FileAppendPlugin = require("enhanced-resolve/lib/FileAppendPlugin");
50
- var DirectoryResultPlugin = require("enhanced-resolve/lib/DirectoryResultPlugin");
51
- var ResultSymlinkPlugin = require("enhanced-resolve/lib/ResultSymlinkPlugin");
52
-
53
- function WebpackOptionsApply() {
54
- OptionsApply.call(this);
55
- }
56
- module.exports = WebpackOptionsApply;
57
-
58
- WebpackOptionsApply.prototype = Object.create(OptionsApply.prototype);
59
- WebpackOptionsApply.prototype.process = function(options, compiler) {
60
- compiler.context = options.context;
61
- if(options.plugins && Array.isArray(options.plugins)) {
62
- compiler.apply.apply(compiler, options.plugins);
63
- }
64
- compiler.outputPath = options.output.path;
65
- compiler.recordsInputPath = options.recordsInputPath || options.recordsPath;
66
- compiler.recordsOutputPath = options.recordsOutputPath || options.recordsPath;
67
- compiler.name = options.name;
68
- if(typeof options.target === "string") {
69
- switch(options.target) {
70
- case "web":
71
- var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
72
- var NodeSourcePlugin = require("./node/NodeSourcePlugin");
73
- compiler.apply(
74
- new JsonpTemplatePlugin(options.output),
75
- new FunctionModulePlugin(options.output),
76
- new NodeSourcePlugin(options.node),
77
- new LoaderTargetPlugin("web")
78
- );
79
- break;
80
- case "webworker":
81
- var WebWorkerTemplatePlugin = require("./webworker/WebWorkerTemplatePlugin");
82
- var NodeSourcePlugin = require("./node/NodeSourcePlugin");
83
- compiler.apply(
84
- new WebWorkerTemplatePlugin(options.output),
85
- new FunctionModulePlugin(options.output),
86
- new NodeSourcePlugin(options.node),
87
- new LoaderTargetPlugin("webworker")
88
- );
89
- break;
90
- case "node":
91
- case "async-node":
92
- var NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
93
- var NodeTargetPlugin = require("./node/NodeTargetPlugin");
94
- compiler.apply(
95
- new NodeTemplatePlugin(options.output, options.target === "async-node"),
96
- new FunctionModulePlugin(options.output),
97
- new NodeTargetPlugin(),
98
- new LoaderTargetPlugin("node")
99
- );
100
- break;
101
- case "node-webkit":
102
- var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
103
- var NodeTargetPlugin = require("./node/NodeTargetPlugin");
104
- var ExternalsPlugin = require("./ExternalsPlugin");
105
- compiler.apply(
106
- new JsonpTemplatePlugin(options.output),
107
- new FunctionModulePlugin(options.output),
108
- new NodeTargetPlugin(),
109
- new ExternalsPlugin("commonjs", "nw.gui"),
110
- new LoaderTargetPlugin("node-webkit")
111
- );
112
- break;
113
- case "atom":
114
- case "electron":
115
- case "electron-main":
116
- var NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
117
- var NodeTargetPlugin = require("./node/NodeTargetPlugin");
118
- var ExternalsPlugin = require("./ExternalsPlugin");
119
- compiler.apply(
120
- new NodeTemplatePlugin(options.output, true),
121
- new FunctionModulePlugin(options.output),
122
- new NodeTargetPlugin(),
123
- new ExternalsPlugin("commonjs", [
124
- "app",
125
- "auto-updater",
126
- "browser-window",
127
- "content-tracing",
128
- "dialog",
129
- "electron",
130
- "global-shortcut",
131
- "ipc",
132
- "ipc-main",
133
- "menu",
134
- "menu-item",
135
- "power-monitor",
136
- "power-save-blocker",
137
- "protocol",
138
- "session",
139
- "web-contents",
140
- "tray",
141
- "clipboard",
142
- "crash-reporter",
143
- "native-image",
144
- "screen",
145
- "shell"
146
- ]),
147
- new LoaderTargetPlugin(options.target)
148
- );
149
- break;
150
- case "electron-renderer":
151
- var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
152
- var NodeTargetPlugin = require("./node/NodeTargetPlugin");
153
- var ExternalsPlugin = require("./ExternalsPlugin");
154
- compiler.apply(
155
- new JsonpTemplatePlugin(options.output),
156
- new FunctionModulePlugin(options.output),
157
- new NodeTargetPlugin(),
158
- new ExternalsPlugin("commonjs", [
159
- "desktop-capturer",
160
- "electron",
161
- "ipc",
162
- "ipc-renderer",
163
- "remote",
164
- "web-frame",
165
- "clipboard",
166
- "crash-reporter",
167
- "native-image",
168
- "screen",
169
- "shell"
170
- ]),
171
- new LoaderTargetPlugin(options.target)
172
- );
173
- break;
174
- default:
175
- throw new Error("Unsupported target '" + options.target + "'.");
176
- }
177
- } else if(options.target !== false) {
178
- options.target(compiler);
179
- } else {
180
- throw new Error("Unsupported target '" + options.target + "'.");
181
- }
182
- if(options.output.library || options.output.libraryTarget !== "var") {
183
- var LibraryTemplatePlugin = require("./LibraryTemplatePlugin");
184
- compiler.apply(new LibraryTemplatePlugin(options.output.library, options.output.libraryTarget, options.output.umdNamedDefine));
185
- }
186
- if(options.externals) {
187
- var ExternalsPlugin = require("./ExternalsPlugin");
188
- compiler.apply(new ExternalsPlugin(options.output.libraryTarget, options.externals));
189
- }
190
-
191
- if(options.hot) {
192
- compiler.apply(new MovedToPluginWarningPlugin("hot", "HotModuleReplacementPlugin"));
193
- var HotModuleReplacementPlugin = require("./HotModuleReplacementPlugin");
194
- compiler.apply(new HotModuleReplacementPlugin(options.output));
195
- }
196
-
197
- if(options.devtool && (options.devtool.indexOf("sourcemap") >= 0 || options.devtool.indexOf("source-map") >= 0)) {
198
- var hidden = options.devtool.indexOf("hidden") >= 0;
199
- var inline = options.devtool.indexOf("inline") >= 0;
200
- var evalWrapped = options.devtool.indexOf("eval") >= 0;
201
- var cheap = options.devtool.indexOf("cheap") >= 0;
202
- var moduleMaps = options.devtool.indexOf("module") >= 0;
203
- var noSources = options.devtool.indexOf("nosources") >= 0;
204
- var legacy = options.devtool.indexOf("@") >= 0;
205
- var modern = options.devtool.indexOf("#") >= 0;
206
- var comment = legacy && modern ? "\n/*\n//@ sourceMappingURL=[url]\n//# sourceMappingURL=[url]\n*/" :
207
- legacy ? "\n/*\n//@ sourceMappingURL=[url]\n*/" :
208
- modern ? "\n//# sourceMappingURL=[url]" :
209
- null;
210
- var Plugin = evalWrapped ? EvalSourceMapDevToolPlugin : SourceMapDevToolPlugin;
211
- compiler.apply(new Plugin({
212
- filename: inline ? null : options.output.sourceMapFilename,
213
- moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
214
- fallbackModuleFilenameTemplate: options.output.devtoolFallbackModuleFilenameTemplate,
215
- append: hidden ? false : comment,
216
- module: moduleMaps ? true : cheap ? false : true,
217
- columns: cheap ? false : true,
218
- lineToLine: options.output.devtoolLineToLine,
219
- noSources: noSources,
220
- }));
221
- } else if(options.devtool && options.devtool.indexOf("eval") >= 0) {
222
- var legacy = options.devtool.indexOf("@") >= 0;
223
- var modern = options.devtool.indexOf("#") >= 0;
224
- var comment = legacy && modern ? "//@ sourceURL=[url]\n//# sourceURL=[url]" :
225
- legacy ? "//@ sourceURL=[url]" :
226
- modern ? "//# sourceURL=[url]" :
227
- null;
228
- compiler.apply(new EvalDevToolModulePlugin(comment, options.output.devtoolModuleFilenameTemplate));
229
- }
230
-
231
- compiler.apply(new EntryOptionPlugin());
232
- compiler.applyPluginsBailResult("entry-option", options.context, options.entry);
233
-
234
- if(options.prefetch) {
235
- compiler.apply(new MovedToPluginWarningPlugin("prefetch", "PrefetchPlugin"));
236
- var PrefetchPlugin = require("./PrefetchPlugin");
237
- options.prefetch.map(function(request) {
238
- compiler.apply(new PrefetchPlugin(options.context, request));
239
- });
240
- }
241
- compiler.apply(
242
- new CompatibilityPlugin(),
243
- new LoaderPlugin(),
244
- new NodeStuffPlugin(options.node),
245
- new RequireJsStuffPlugin(),
246
- new APIPlugin(),
247
- new ConstPlugin(),
248
- new RequireIncludePlugin(),
249
- new RequireEnsurePlugin(),
250
- new RequireContextPlugin(options.resolve.modulesDirectories, options.resolve.extensions),
251
- new AMDPlugin(options.module, options.amd || {}),
252
- new CommonJsPlugin(options.module)
253
- );
254
-
255
- compiler.apply(
256
- new RemoveParentModulesPlugin(),
257
- new RemoveEmptyChunksPlugin(),
258
- new MergeDuplicateChunksPlugin(),
259
- new FlagIncludedChunksPlugin()
260
- );
261
-
262
- compiler.apply(new TemplatedPathPlugin());
263
-
264
- compiler.apply(new RecordIdsPlugin());
265
-
266
- compiler.apply(new WarnCaseSensitiveModulesPlugin());
267
-
268
- if(options.optimize && options.optimize.occurenceOrder) {
269
- compiler.apply(new MovedToPluginWarningPlugin("optimize.occurenceOrder", "optimize.OccurrenceOrderPlugin"));
270
- var OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin");
271
- compiler.apply(new OccurrenceOrderPlugin(options.optimize.occurenceOrderPreferEntry));
272
- }
273
-
274
- if(options.optimize && options.optimize.minChunkSize) {
275
- compiler.apply(new MovedToPluginWarningPlugin("optimize.minChunkSize", "optimize.MinChunkSizePlugin"));
276
- var MinChunkSizePlugin = require("./optimize/MinChunkSizePlugin");
277
- compiler.apply(new MinChunkSizePlugin(options.optimize));
278
- }
279
-
280
- if(options.optimize && options.optimize.maxChunks) {
281
- compiler.apply(new MovedToPluginWarningPlugin("optimize.maxChunks", "optimize.LimitChunkCountPlugin"));
282
- var LimitChunkCountPlugin = require("./optimize/LimitChunkCountPlugin");
283
- compiler.apply(new LimitChunkCountPlugin(options.optimize));
284
- }
285
-
286
- if(options.optimize.minimize) {
287
- compiler.apply(new MovedToPluginWarningPlugin("optimize.minimize", "optimize.UglifyJsPlugin"));
288
- var UglifyJsPlugin = require("./optimize/UglifyJsPlugin");
289
- if(options.optimize.minimize === true)
290
- compiler.apply(new UglifyJsPlugin());
291
- else
292
- compiler.apply(new UglifyJsPlugin(options.optimize.minimize));
293
- }
294
-
295
- if(options.cache === undefined ? options.watch : options.cache) {
296
- var CachePlugin = require("./CachePlugin");
297
- compiler.apply(new CachePlugin(typeof options.cache === "object" ? options.cache : null));
298
- }
299
-
300
- if(typeof options.provide === "object") {
301
- compiler.apply(new MovedToPluginWarningPlugin("provide", "ProvidePlugin"));
302
- var ProvidePlugin = require("./ProvidePlugin");
303
- compiler.apply(new ProvidePlugin(options.provide));
304
- }
305
-
306
- if(options.define) {
307
- compiler.apply(new MovedToPluginWarningPlugin("define", "DefinePlugin"));
308
- var defineObject = {};
309
- if(typeof options.define === "object") {
310
- Object.keys(options.define).forEach(function(key) {
311
- defineObject[key] = options.define[key];
312
- });
313
- }
314
- compiler.apply(new DefinePlugin(defineObject));
315
- }
316
- if(options.defineDebug !== false)
317
- compiler.apply(new DefinePlugin({
318
- DEBUG: !!options.debug
319
- }));
320
-
321
- compiler.applyPlugins("after-plugins", compiler);
322
- compiler.resolvers.normal.apply(
323
- new UnsafeCachePlugin(options.resolve.unsafeCache),
324
- options.resolve.packageAlias ? new DirectoryDescriptionFileFieldAliasPlugin("package.json", options.resolve.packageAlias) : function() {},
325
- new ModuleAliasPlugin(options.resolve.alias),
326
- makeRootPlugin("module", options.resolve.root),
327
- new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
328
- makeRootPlugin("module", options.resolve.fallback),
329
- new ModuleAsFilePlugin("module"),
330
- new ModuleAsDirectoryPlugin("module"),
331
- new DirectoryDescriptionFilePlugin("package.json", options.resolve.packageMains),
332
- new DirectoryDefaultFilePlugin(["index"]),
333
- new FileAppendPlugin(options.resolve.extensions),
334
- new ResultSymlinkPlugin()
335
- );
336
- compiler.resolvers.context.apply(
337
- new UnsafeCachePlugin(options.resolve.unsafeCache),
338
- new ModuleAliasPlugin(options.resolve.alias),
339
- makeRootPlugin("module", options.resolve.root),
340
- new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
341
- makeRootPlugin("module", options.resolve.fallback),
342
- new ModuleAsFilePlugin("module"),
343
- new ModuleAsDirectoryPlugin("module"),
344
- new DirectoryResultPlugin(),
345
- new ResultSymlinkPlugin()
346
- );
347
- compiler.resolvers.loader.apply(
348
- new UnsafeCachePlugin(options.resolve.unsafeCache),
349
- new ModuleAliasPlugin(options.resolveLoader.alias),
350
- makeRootPlugin("loader-module", options.resolveLoader.root),
351
- new ModulesInDirectoriesPlugin("loader-module", options.resolveLoader.modulesDirectories),
352
- makeRootPlugin("loader-module", options.resolveLoader.fallback),
353
- new ModuleTemplatesPlugin("loader-module", options.resolveLoader.moduleTemplates, "module"),
354
- new ModuleAsFilePlugin("module"),
355
- new ModuleAsDirectoryPlugin("module"),
356
- new DirectoryDescriptionFilePlugin("package.json", options.resolveLoader.packageMains),
357
- new DirectoryDefaultFilePlugin(["index"]),
358
- new FileAppendPlugin(options.resolveLoader.extensions),
359
- new ResultSymlinkPlugin()
360
- );
361
- compiler.applyPlugins("after-resolvers", compiler);
362
- return options;
363
- };
364
-
365
- function makeRootPlugin(name, root) {
366
- if(typeof root === "string")
367
- return new ModulesInRootPlugin(name, root);
368
- else if(Array.isArray(root)) {
369
- return function() {
370
- root.forEach(function(root) {
371
- this.apply(new ModulesInRootPlugin(name, root));
372
- }, this);
373
- };
374
- }
375
- return function() {};
376
- }
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ var OptionsApply = require("./OptionsApply");
6
+
7
+ var LoaderTargetPlugin = require("./LoaderTargetPlugin");
8
+ var FunctionModulePlugin = require("./FunctionModulePlugin");
9
+ var EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
10
+ var SourceMapDevToolPlugin = require("./SourceMapDevToolPlugin");
11
+ var EvalSourceMapDevToolPlugin = require("./EvalSourceMapDevToolPlugin");
12
+
13
+ var EntryOptionPlugin = require("./EntryOptionPlugin");
14
+ var RecordIdsPlugin = require("./RecordIdsPlugin");
15
+
16
+ var APIPlugin = require("./APIPlugin");
17
+ var ConstPlugin = require("./ConstPlugin");
18
+ var RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
19
+ var NodeStuffPlugin = require("./NodeStuffPlugin");
20
+ var CompatibilityPlugin = require("./CompatibilityPlugin");
21
+ var DefinePlugin = require("./DefinePlugin");
22
+
23
+ var MovedToPluginWarningPlugin = require("./MovedToPluginWarningPlugin");
24
+ var TemplatedPathPlugin = require("./TemplatedPathPlugin");
25
+ var WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
26
+
27
+ var LoaderPlugin = require("./dependencies/LoaderPlugin");
28
+ var CommonJsPlugin = require("./dependencies/CommonJsPlugin");
29
+ var AMDPlugin = require("./dependencies/AMDPlugin");
30
+ var RequireContextPlugin = require("./dependencies/RequireContextPlugin");
31
+ var RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
32
+ var RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
33
+
34
+ var RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
35
+ var RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
36
+ var MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
37
+ var FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
38
+
39
+ var UnsafeCachePlugin = require("enhanced-resolve/lib/UnsafeCachePlugin");
40
+ var ModulesInDirectoriesPlugin = require("enhanced-resolve/lib/ModulesInDirectoriesPlugin");
41
+ var ModulesInRootPlugin = require("enhanced-resolve/lib/ModulesInRootPlugin");
42
+ var ModuleTemplatesPlugin = require("enhanced-resolve/lib/ModuleTemplatesPlugin");
43
+ var ModuleAsFilePlugin = require("enhanced-resolve/lib/ModuleAsFilePlugin");
44
+ var ModuleAsDirectoryPlugin = require("enhanced-resolve/lib/ModuleAsDirectoryPlugin");
45
+ var ModuleAliasPlugin = require("enhanced-resolve/lib/ModuleAliasPlugin");
46
+ var DirectoryDefaultFilePlugin = require("enhanced-resolve/lib/DirectoryDefaultFilePlugin");
47
+ var DirectoryDescriptionFilePlugin = require("enhanced-resolve/lib/DirectoryDescriptionFilePlugin");
48
+ var DirectoryDescriptionFileFieldAliasPlugin = require("enhanced-resolve/lib/DirectoryDescriptionFileFieldAliasPlugin");
49
+ var FileAppendPlugin = require("enhanced-resolve/lib/FileAppendPlugin");
50
+ var DirectoryResultPlugin = require("enhanced-resolve/lib/DirectoryResultPlugin");
51
+ var ResultSymlinkPlugin = require("enhanced-resolve/lib/ResultSymlinkPlugin");
52
+
53
+ function WebpackOptionsApply() {
54
+ OptionsApply.call(this);
55
+ }
56
+ module.exports = WebpackOptionsApply;
57
+
58
+ WebpackOptionsApply.prototype = Object.create(OptionsApply.prototype);
59
+ WebpackOptionsApply.prototype.process = function(options, compiler) {
60
+ compiler.context = options.context;
61
+ if(options.plugins && Array.isArray(options.plugins)) {
62
+ compiler.apply.apply(compiler, options.plugins);
63
+ }
64
+ compiler.outputPath = options.output.path;
65
+ compiler.recordsInputPath = options.recordsInputPath || options.recordsPath;
66
+ compiler.recordsOutputPath = options.recordsOutputPath || options.recordsPath;
67
+ compiler.name = options.name;
68
+ if(typeof options.target === "string") {
69
+ switch(options.target) {
70
+ case "web":
71
+ var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
72
+ var NodeSourcePlugin = require("./node/NodeSourcePlugin");
73
+ compiler.apply(
74
+ new JsonpTemplatePlugin(options.output),
75
+ new FunctionModulePlugin(options.output),
76
+ new NodeSourcePlugin(options.node),
77
+ new LoaderTargetPlugin("web")
78
+ );
79
+ break;
80
+ case "webworker":
81
+ var WebWorkerTemplatePlugin = require("./webworker/WebWorkerTemplatePlugin");
82
+ var NodeSourcePlugin = require("./node/NodeSourcePlugin");
83
+ compiler.apply(
84
+ new WebWorkerTemplatePlugin(options.output),
85
+ new FunctionModulePlugin(options.output),
86
+ new NodeSourcePlugin(options.node),
87
+ new LoaderTargetPlugin("webworker")
88
+ );
89
+ break;
90
+ case "node":
91
+ case "async-node":
92
+ var NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
93
+ var NodeTargetPlugin = require("./node/NodeTargetPlugin");
94
+ compiler.apply(
95
+ new NodeTemplatePlugin(options.output, options.target === "async-node"),
96
+ new FunctionModulePlugin(options.output),
97
+ new NodeTargetPlugin(),
98
+ new LoaderTargetPlugin("node")
99
+ );
100
+ break;
101
+ case "node-webkit":
102
+ var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
103
+ var NodeTargetPlugin = require("./node/NodeTargetPlugin");
104
+ var ExternalsPlugin = require("./ExternalsPlugin");
105
+ compiler.apply(
106
+ new JsonpTemplatePlugin(options.output),
107
+ new FunctionModulePlugin(options.output),
108
+ new NodeTargetPlugin(),
109
+ new ExternalsPlugin("commonjs", "nw.gui"),
110
+ new LoaderTargetPlugin("node-webkit")
111
+ );
112
+ break;
113
+ case "atom":
114
+ case "electron":
115
+ case "electron-main":
116
+ var NodeTemplatePlugin = require("./node/NodeTemplatePlugin");
117
+ var NodeTargetPlugin = require("./node/NodeTargetPlugin");
118
+ var ExternalsPlugin = require("./ExternalsPlugin");
119
+ compiler.apply(
120
+ new NodeTemplatePlugin(options.output, true),
121
+ new FunctionModulePlugin(options.output),
122
+ new NodeTargetPlugin(),
123
+ new ExternalsPlugin("commonjs", [
124
+ "app",
125
+ "auto-updater",
126
+ "browser-window",
127
+ "content-tracing",
128
+ "dialog",
129
+ "electron",
130
+ "global-shortcut",
131
+ "ipc",
132
+ "ipc-main",
133
+ "menu",
134
+ "menu-item",
135
+ "power-monitor",
136
+ "power-save-blocker",
137
+ "protocol",
138
+ "session",
139
+ "web-contents",
140
+ "tray",
141
+ "clipboard",
142
+ "crash-reporter",
143
+ "native-image",
144
+ "screen",
145
+ "shell"
146
+ ]),
147
+ new LoaderTargetPlugin(options.target)
148
+ );
149
+ break;
150
+ case "electron-renderer":
151
+ var JsonpTemplatePlugin = require("./JsonpTemplatePlugin");
152
+ var NodeTargetPlugin = require("./node/NodeTargetPlugin");
153
+ var ExternalsPlugin = require("./ExternalsPlugin");
154
+ compiler.apply(
155
+ new JsonpTemplatePlugin(options.output),
156
+ new FunctionModulePlugin(options.output),
157
+ new NodeTargetPlugin(),
158
+ new ExternalsPlugin("commonjs", [
159
+ "desktop-capturer",
160
+ "electron",
161
+ "ipc",
162
+ "ipc-renderer",
163
+ "remote",
164
+ "web-frame",
165
+ "clipboard",
166
+ "crash-reporter",
167
+ "native-image",
168
+ "screen",
169
+ "shell"
170
+ ]),
171
+ new LoaderTargetPlugin(options.target)
172
+ );
173
+ break;
174
+ default:
175
+ throw new Error("Unsupported target '" + options.target + "'.");
176
+ }
177
+ } else if(options.target !== false) {
178
+ options.target(compiler);
179
+ } else {
180
+ throw new Error("Unsupported target '" + options.target + "'.");
181
+ }
182
+ if(options.output.library || options.output.libraryTarget !== "var") {
183
+ var LibraryTemplatePlugin = require("./LibraryTemplatePlugin");
184
+ compiler.apply(new LibraryTemplatePlugin(options.output.library, options.output.libraryTarget, options.output.umdNamedDefine));
185
+ }
186
+ if(options.externals) {
187
+ var ExternalsPlugin = require("./ExternalsPlugin");
188
+ compiler.apply(new ExternalsPlugin(options.output.libraryTarget, options.externals));
189
+ }
190
+
191
+ if(options.hot) {
192
+ compiler.apply(new MovedToPluginWarningPlugin("hot", "HotModuleReplacementPlugin"));
193
+ var HotModuleReplacementPlugin = require("./HotModuleReplacementPlugin");
194
+ compiler.apply(new HotModuleReplacementPlugin(options.output));
195
+ }
196
+
197
+ if(options.devtool && (options.devtool.indexOf("sourcemap") >= 0 || options.devtool.indexOf("source-map") >= 0)) {
198
+ var hidden = options.devtool.indexOf("hidden") >= 0;
199
+ var inline = options.devtool.indexOf("inline") >= 0;
200
+ var evalWrapped = options.devtool.indexOf("eval") >= 0;
201
+ var cheap = options.devtool.indexOf("cheap") >= 0;
202
+ var moduleMaps = options.devtool.indexOf("module") >= 0;
203
+ var noSources = options.devtool.indexOf("nosources") >= 0;
204
+ var legacy = options.devtool.indexOf("@") >= 0;
205
+ var modern = options.devtool.indexOf("#") >= 0;
206
+ var comment = legacy && modern ? "\n/*\n//@ sourceMappingURL=[url]\n//# sourceMappingURL=[url]\n*/" :
207
+ legacy ? "\n/*\n//@ sourceMappingURL=[url]\n*/" :
208
+ modern ? "\n//# sourceMappingURL=[url]" :
209
+ null;
210
+ var Plugin = evalWrapped ? EvalSourceMapDevToolPlugin : SourceMapDevToolPlugin;
211
+ compiler.apply(new Plugin({
212
+ filename: inline ? null : options.output.sourceMapFilename,
213
+ moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
214
+ fallbackModuleFilenameTemplate: options.output.devtoolFallbackModuleFilenameTemplate,
215
+ append: hidden ? false : comment,
216
+ module: moduleMaps ? true : cheap ? false : true,
217
+ columns: cheap ? false : true,
218
+ lineToLine: options.output.devtoolLineToLine,
219
+ noSources: noSources,
220
+ }));
221
+ } else if(options.devtool && options.devtool.indexOf("eval") >= 0) {
222
+ var legacy = options.devtool.indexOf("@") >= 0;
223
+ var modern = options.devtool.indexOf("#") >= 0;
224
+ var comment = legacy && modern ? "//@ sourceURL=[url]\n//# sourceURL=[url]" :
225
+ legacy ? "//@ sourceURL=[url]" :
226
+ modern ? "//# sourceURL=[url]" :
227
+ null;
228
+ compiler.apply(new EvalDevToolModulePlugin(comment, options.output.devtoolModuleFilenameTemplate));
229
+ }
230
+
231
+ compiler.apply(new EntryOptionPlugin());
232
+ compiler.applyPluginsBailResult("entry-option", options.context, options.entry);
233
+
234
+ if(options.prefetch) {
235
+ compiler.apply(new MovedToPluginWarningPlugin("prefetch", "PrefetchPlugin"));
236
+ var PrefetchPlugin = require("./PrefetchPlugin");
237
+ options.prefetch.map(function(request) {
238
+ compiler.apply(new PrefetchPlugin(options.context, request));
239
+ });
240
+ }
241
+ compiler.apply(
242
+ new CompatibilityPlugin(),
243
+ new LoaderPlugin(),
244
+ new NodeStuffPlugin(options.node),
245
+ new RequireJsStuffPlugin(),
246
+ new APIPlugin(),
247
+ new ConstPlugin(),
248
+ new RequireIncludePlugin(),
249
+ new RequireEnsurePlugin(),
250
+ new RequireContextPlugin(options.resolve.modulesDirectories, options.resolve.extensions),
251
+ new AMDPlugin(options.module, options.amd || {}),
252
+ new CommonJsPlugin(options.module)
253
+ );
254
+
255
+ compiler.apply(
256
+ new RemoveParentModulesPlugin(),
257
+ new RemoveEmptyChunksPlugin(),
258
+ new MergeDuplicateChunksPlugin(),
259
+ new FlagIncludedChunksPlugin()
260
+ );
261
+
262
+ compiler.apply(new TemplatedPathPlugin());
263
+
264
+ compiler.apply(new RecordIdsPlugin());
265
+
266
+ compiler.apply(new WarnCaseSensitiveModulesPlugin());
267
+
268
+ if(options.optimize && options.optimize.occurenceOrder) {
269
+ compiler.apply(new MovedToPluginWarningPlugin("optimize.occurenceOrder", "optimize.OccurrenceOrderPlugin"));
270
+ var OccurrenceOrderPlugin = require("./optimize/OccurrenceOrderPlugin");
271
+ compiler.apply(new OccurrenceOrderPlugin(options.optimize.occurenceOrderPreferEntry));
272
+ }
273
+
274
+ if(options.optimize && options.optimize.minChunkSize) {
275
+ compiler.apply(new MovedToPluginWarningPlugin("optimize.minChunkSize", "optimize.MinChunkSizePlugin"));
276
+ var MinChunkSizePlugin = require("./optimize/MinChunkSizePlugin");
277
+ compiler.apply(new MinChunkSizePlugin(options.optimize));
278
+ }
279
+
280
+ if(options.optimize && options.optimize.maxChunks) {
281
+ compiler.apply(new MovedToPluginWarningPlugin("optimize.maxChunks", "optimize.LimitChunkCountPlugin"));
282
+ var LimitChunkCountPlugin = require("./optimize/LimitChunkCountPlugin");
283
+ compiler.apply(new LimitChunkCountPlugin(options.optimize));
284
+ }
285
+
286
+ if(options.optimize.minimize) {
287
+ compiler.apply(new MovedToPluginWarningPlugin("optimize.minimize", "optimize.UglifyJsPlugin"));
288
+ var UglifyJsPlugin = require("./optimize/UglifyJsPlugin");
289
+ if(options.optimize.minimize === true)
290
+ compiler.apply(new UglifyJsPlugin());
291
+ else
292
+ compiler.apply(new UglifyJsPlugin(options.optimize.minimize));
293
+ }
294
+
295
+ if(options.cache === undefined ? options.watch : options.cache) {
296
+ var CachePlugin = require("./CachePlugin");
297
+ compiler.apply(new CachePlugin(typeof options.cache === "object" ? options.cache : null));
298
+ }
299
+
300
+ if(typeof options.provide === "object") {
301
+ compiler.apply(new MovedToPluginWarningPlugin("provide", "ProvidePlugin"));
302
+ var ProvidePlugin = require("./ProvidePlugin");
303
+ compiler.apply(new ProvidePlugin(options.provide));
304
+ }
305
+
306
+ if(options.define) {
307
+ compiler.apply(new MovedToPluginWarningPlugin("define", "DefinePlugin"));
308
+ var defineObject = {};
309
+ if(typeof options.define === "object") {
310
+ Object.keys(options.define).forEach(function(key) {
311
+ defineObject[key] = options.define[key];
312
+ });
313
+ }
314
+ compiler.apply(new DefinePlugin(defineObject));
315
+ }
316
+ if(options.defineDebug !== false)
317
+ compiler.apply(new DefinePlugin({
318
+ DEBUG: !!options.debug
319
+ }));
320
+
321
+ compiler.applyPlugins("after-plugins", compiler);
322
+ compiler.resolvers.normal.apply(
323
+ new UnsafeCachePlugin(options.resolve.unsafeCache),
324
+ options.resolve.packageAlias ? new DirectoryDescriptionFileFieldAliasPlugin("package.json", options.resolve.packageAlias) : function() {},
325
+ new ModuleAliasPlugin(options.resolve.alias),
326
+ makeRootPlugin("module", options.resolve.root),
327
+ new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
328
+ makeRootPlugin("module", options.resolve.fallback),
329
+ new ModuleAsFilePlugin("module"),
330
+ new ModuleAsDirectoryPlugin("module"),
331
+ new DirectoryDescriptionFilePlugin("package.json", options.resolve.packageMains),
332
+ new DirectoryDefaultFilePlugin(["index"]),
333
+ new FileAppendPlugin(options.resolve.extensions),
334
+ new ResultSymlinkPlugin()
335
+ );
336
+ compiler.resolvers.context.apply(
337
+ new UnsafeCachePlugin(options.resolve.unsafeCache),
338
+ new ModuleAliasPlugin(options.resolve.alias),
339
+ makeRootPlugin("module", options.resolve.root),
340
+ new ModulesInDirectoriesPlugin("module", options.resolve.modulesDirectories),
341
+ makeRootPlugin("module", options.resolve.fallback),
342
+ new ModuleAsFilePlugin("module"),
343
+ new ModuleAsDirectoryPlugin("module"),
344
+ new DirectoryResultPlugin(),
345
+ new ResultSymlinkPlugin()
346
+ );
347
+ compiler.resolvers.loader.apply(
348
+ new UnsafeCachePlugin(options.resolve.unsafeCache),
349
+ new ModuleAliasPlugin(options.resolveLoader.alias),
350
+ makeRootPlugin("loader-module", options.resolveLoader.root),
351
+ new ModulesInDirectoriesPlugin("loader-module", options.resolveLoader.modulesDirectories),
352
+ makeRootPlugin("loader-module", options.resolveLoader.fallback),
353
+ new ModuleTemplatesPlugin("loader-module", options.resolveLoader.moduleTemplates, "module"),
354
+ new ModuleAsFilePlugin("module"),
355
+ new ModuleAsDirectoryPlugin("module"),
356
+ new DirectoryDescriptionFilePlugin("package.json", options.resolveLoader.packageMains),
357
+ new DirectoryDefaultFilePlugin(["index"]),
358
+ new FileAppendPlugin(options.resolveLoader.extensions),
359
+ new ResultSymlinkPlugin()
360
+ );
361
+ compiler.applyPlugins("after-resolvers", compiler);
362
+ return options;
363
+ };
364
+
365
+ function makeRootPlugin(name, root) {
366
+ if(typeof root === "string")
367
+ return new ModulesInRootPlugin(name, root);
368
+ else if(Array.isArray(root)) {
369
+ return function() {
370
+ root.forEach(function(root) {
371
+ this.apply(new ModulesInRootPlugin(name, root));
372
+ }, this);
373
+ };
374
+ }
375
+ return function() {};
376
+ }