Commit Graph

251 Commits

Author SHA1 Message Date
Tobias Koppers d3cf3928f5 Persistent Caching fixes
improve error handling in pack file cache strategy
support context timestamp snapshot
make ContextModule serializable
fix snapshotting bug of managed paths
use managed and immutable path info for context hashes and timestamps
enabled managedPaths for node_modules during cache tests
2019-09-04 16:33:54 +02:00
Tobias Koppers e507392094 add output.ecmaVersion options to set emitted code style
fix a bug with prefetching initial chunks
InitFragments have get[End]Content methods which get a sourceContext
RuntimeModules have implicit chunk and compilation
changed default to `output.ecmaVersion: 2015`
2019-08-26 21:32:29 +02:00
Tobias Koppers b2e7837288 replace Object.assign with object spread 2019-06-19 13:16:05 +02:00
Tobias Koppers e4ba79f0b8 add type coverage for ContextModuleOptions and GroupOptions 2019-06-14 11:44:54 +02:00
Tobias Koppers 6db94536ad Merge tag 'v4.34.0' into next
4.34.0
2019-06-13 10:51:12 +02:00
Tobias Koppers 0c39719729 avoid zero sized modules as they lead to problems 2019-05-13 12:29:29 +02:00
Tobias Koppers 61445a5ed0 Merge tag 'v4.29.3' into next
4.29.3
2019-02-07 09:41:34 +01:00
Tobias Koppers 7a5137d7c4 fixes in ContextModule
avoid generating __webpack_require__.e when no chunks are used
add optimized lazy mode when no chunks and no fake make are used
improve module id check
2019-02-06 17:51:16 +01:00
Tobias Koppers d40f7b2642 cache contextify and pass associatedObjectForCache to all calls 2019-01-19 12:40:00 +01:00
Florent Cailhol f05af4a4a7 Use serialization API instead of ObjectMiddleware 2018-12-28 13:54:10 +01:00
Tobias Koppers 1374757006 remove ModuleReason
remove HotUpdateChunkTemplate
move compareLocations into comparators
re-enable NodeSourcePlugin for `.mjs`
2018-12-20 16:38:26 +01:00
Tobias Koppers 5563ee9e58 use makePathsRelative instead of contextify
unify contextify and makePathsRelative
separate NormalModuleFactory ignored, ContextModule and ConcatenatedModule identifier with "|"
2018-12-07 18:12:04 +01:00
Tobias Koppers cc34ea42b0 add type argument to Module.size
add getSize to Generator
2018-12-05 20:18:59 +01:00
Tobias Koppers bf1fc171ba runtime requirement for RuntimeGlobals.moduleFactories 2018-11-29 16:08:52 +01:00
Tobias Koppers 7c37a6a972 handle runtime requirements 2018-11-29 16:07:17 +01:00
Tobias Koppers c1e89c0543 Runtime requirement support in NormalModule, Generators and DependencyTemplate 2018-11-29 16:06:12 +01:00
Tobias Koppers 0232674f9c Initial runtime module work 2018-11-29 16:03:32 +01:00
Florent Cailhol be8c6bbe71 Add types on module files 2018-11-07 14:03:25 +01:00
Tobias Koppers eb28697419 move magic property names on __webpack_require__ into RuntimeGlobals file 2018-11-05 15:28:34 +01:00
Tobias Koppers 83866b0dac use stable sorting for sorting dependencies 2018-10-23 11:32:32 +02:00
Tobias Koppers 4b69df1117 allow to make classes not-serializable
make ContextModule not-serializable because it's not needed
2018-10-18 15:52:22 +02:00
Tobias Koppers f23ce49040 remove module argument from AsyncDepBlock
reorder/remove arguments of ImportDepBlock, AMDRequireDepBlock, RequireEnsureDepBlock
2018-10-17 23:07:01 +02:00
Tobias Koppers 7340fbb547 refactor Cache
add a new hookable Cache class
removed CachePlugin
add MemoryCachePlugin
refactor timestamps
create FileSystemInfo class
2018-09-27 13:20:19 +02:00
Tobias Koppers 4eab41bd5f refactor Module.needBuild to be async 2018-09-27 11:20:54 +02:00
Tobias Koppers 554b417546 Modules are responsible for sorting of dependencies 2018-09-27 11:20:42 +02:00
Tobias Koppers 5b4cbb5ee0 add queues to Compilation
remove Semaphore and use AsyncQueue instead
deprecate Module.needRebuild, add Module.needBuild
remove Module.unbuild
add Module.invalidateBuild
2018-09-12 13:17:03 +02:00
Tobias Koppers bad9d8a271 move Module.id into ChunkGraph
remove disconnect and unseal from Module
2018-08-28 15:08:52 +02:00
Tobias Koppers 02b15a1b46 pass chunkGraph to updateHash instead of moduleGraph
pass chunkGraph to compareModulesById instead of moduleGraph
pass chunkGraph to methods of RuntimeTemplate
use comparators from module at some places
2018-08-28 12:06:53 +02:00
Tobias Koppers 670502fc81 Move AsyncDependenciesBlock.chunkGroup into ChunkGraph 2018-08-22 20:17:49 +02:00
Tobias Koppers eb63cf80d6 move built flag into Compilation 2018-08-22 15:33:16 +02:00
Tobias Koppers 381e2db200 replace Module.reasons and Dependency.module with ModuleGraph 2018-08-02 17:54:44 +02:00
Tobias Koppers 11e127d162 pass moduleGraph along with multiple methods 2018-08-02 17:54:42 +02:00
Tobias Koppers ec1329a7d4 make libIdent required
add types
2018-08-02 16:29:20 +02:00
Tobias Koppers 4ce109f8c1 change arguments of Generator.generate and Module.source into a object to be easier extensible
add JavascriptModulesPlugin.getHooks().shouldRender to decide if a module should be rendered
2018-08-02 16:07:29 +02:00
Tobias Koppers cf5f1d723c format existing code 2018-07-30 21:29:21 +02:00
Tobias Koppers 22c4756c9e add more types to Module 2018-07-25 12:38:34 +02:00
Tobias Koppers bc10939096 add types for Module and subclasses
better way to handle "optional" methods
2018-07-25 12:12:17 +02:00
Tobias Koppers 66d3f319a6 Merge tag 'v4.16.2' into next
4.16.2
2018-07-23 12:19:16 +02:00
Tobias Koppers 2b14ddc984 Merge tag 'v4.16.0' into next
4.16.0
2018-07-11 11:13:47 +02:00
Tobias Koppers 569c415623
Merge branch 'master' into enable-noImplicitThis 2018-07-11 08:43:26 +02:00
Tobias Koppers 79846d138f make loc in context dependencies a correct object 2018-07-10 10:25:13 +02:00
Mohsen Azimi a0e1ad920e Enable noImplicitThis TypeScript compiler option 2018-07-05 08:07:46 +03:00
Tobias Koppers 0a06f19fd8 Merge tag 'v4.15.0' into next
4.15.0
2018-07-04 22:19:50 +02:00
Tobias Koppers fb2c24bf76 add `splitChunks.maxSize` option
add `splitChunks.fallbackCacheGroup`
add `splitChunks.hidePathInfo`
move `contextify` into utils
add some types
2018-07-04 10:45:02 +02:00
Florent Cailhol 91663f19a2 Remove deprecated APIs 2018-06-27 10:08:12 +02:00
Tobias Koppers b4699c0657 add order for DependencyReference
and add types for touched code
2018-06-08 13:20:57 +02:00
Florent Cailhol 2a9452e51b Add brackets for multiline if/for statements 2018-05-29 15:45:44 +02:00
Tobias Koppers 770847171d Merge branch 'master' into bugfix/namespace-object
# Conflicts:
#	lib/RuntimeTemplate.js
2018-05-28 22:42:21 +02:00
Oded Niv 17fd4d8b48 Align 'Cannot find module' message with native NodeJS 2018-05-15 09:24:16 +03:00
Tobias Koppers a926a19715 create better namespace objects
avoid using Object.assign (fixes #7162)
2018-05-03 12:55:00 +02:00
Tobias Koppers 9cb1a66317 add support for link preload/prefetch
`import(/* webpackPrefetchPriority: 10 */ "...")`
`import(/* webpackPreloadPriority: 10 */ "...")`
2018-04-16 11:29:25 +02:00
Tobias Koppers 8d8da4cdff Merge branch 'master' into bump_prettier 2018-03-29 11:48:02 +02:00
Tobias Koppers f600ccd264
Merge pull request #6827 from Connormiha/optimize-sort-by-identifier
Save identifier module after first getting
2018-03-29 11:00:54 +02:00
Tobias Koppers 93a5bf567f fixes for mini-css-extract-plugin 2018-03-28 16:19:15 +02:00
Florent Cailhol f1092ad516 Update prettier toolchain 2018-03-26 16:56:10 +02:00
Tobias Koppers 9012ab9ace
remove duplicate assignment 2018-03-26 15:46:05 +02:00
Mihail Bodrov ee22d498fe Compute identifier in context module in constructor 2018-03-24 19:02:30 +01:00
Mihail Bodrov 8c11da5219 Save identifier module after first getting 2018-03-23 00:53:26 +03:00
Florent Cailhol 3983803d30 Destructure 'require' to improve readability 2018-03-22 12:05:58 +01:00
Tobias Koppers 6a5d081f29
Merge pull request #6591 from jsoref/spelling
Spelling
2018-02-27 12:50:34 +01:00
Tobias Koppers 8bf15740bb CJS fake namespace object contains exports now
#6576
2018-02-26 19:11:53 +01:00
Josh Soref 581069bb56 spelling: uncaught 2018-02-26 02:50:05 +00:00
Tobias Koppers 5238159d21 run prettier on existing code 2018-02-25 02:00:20 +01:00
Florent Cailhol 63b4523a15 Pass 'context' as constructor argument 2018-01-30 21:40:44 +01:00
Tobias Koppers d6816afddf
Merge pull request #6355 from webpack/for_of_loops
Use for-of loops instead of forEach
2018-01-24 10:35:58 +01:00
Tobias Koppers 9c8098c635
Merge pull request #6370 from webpack/remove_v3_deprecated
Remove v3 deprecated APIs
2018-01-24 09:43:10 +01:00
Tobias Koppers 7a1b357aad
Merge branch 'next' into for_of_loops 2018-01-24 09:01:31 +01:00
Florent Cailhol 7b8fa112e0 Remove v3 deprecated APIs 2018-01-23 23:25:01 +01:00
Florent Cailhol d4811b0d37 Use for-of loops instead of forEach 2018-01-23 22:53:18 +01:00
Evan Scott 1f29fa9b51 perf: refactor various timestamp caches into ES6 Maps
This change satisfies https://github.com/webpack/webpack/issues/6234
which desires to change the timestamp caches from plain objects to
the ES6 Map type to avoid deopts, since v8 expects things to be
added to Maps but objects are only fast if properties aren't added
dynamically after initial assignment.
2018-01-23 02:30:22 -05:00
Tobias Koppers 18ae73dad4 Refactor chunk graph
Chunks are now always in ChunkGroups
ChunkGroups have parents and children, Chunks no longer have this
AsyncDependenciesBlocks point to a ChunkGroup instead of a list of chunks
Entrypoint is now a ChunkGroup (extends from it)
move stuff graph modification methods into GraphHelpers
Change chunk id recording to source-based
Chunks have parents, siblings and children in Stats
rename AutomaticCommonsChunksPlugin to SplitChunksPlugin
add request property to origin (ChunkGroup)
remove moveToParent from AggressiveMergingPlugin
fix issues with AggressiveSplittingPlugin
remove CommonsChunkPlugin
add optimization.runtimeChunk (RuntimeChunkPlugin)
fix a filename bug for initial chunks
remove extract-text-webpack-plugin from test suite
add DebugHash to help debugging hash issues
fix issues with entry modules in different chunk as runtime
redo optimization.splitChunks options
Compilation.entrypoints is now a Map
Compilation.chunkGroups has been added
remove some unittests
update examples
update tests with CommonsChunkPlugin
2018-01-19 19:21:30 +01:00
Vitali Kuzmich 3a89252c62 Avoid extra semicolons in bundled files. Don't recreate the function on an each iteration. 2018-01-06 05:18:40 +03:00
Tobias Koppers ed811a5aa8 remove repeated code 2017-12-22 19:42:44 +01:00
Tobias Koppers 53a1d6c7b5 replace harmonyModule flag with exportsType 3-state
exportsType falsy: It's non-harmony module
exportsType "namespace": It's a harmony module, the exports is the namespace object
exportsType "default": It's a harmony module, the exports is the default exports, named exports are properties of the default export
2017-12-22 19:42:41 +01:00
Tobias Koppers 2aac6badd5 move generated runtime code to RuntimeTemplate 2017-12-22 19:41:28 +01:00
Tobias Koppers e829a5ed71 Reset dependencies in unbuild
Elsewise they are cleared in disconnect and module removing doesn't work correctly
2017-12-12 17:01:14 +01:00
Tobias Koppers ffb977fed4 refactor meta -> buildMeta, add factoryMeta
add compat layer to Module.meta
2017-12-12 16:57:50 +01:00
Tobias Koppers 758a388f69 pass runtimeTemplate to DependencyTemplate
move outputOptions and requestShortener into runtimeTemplate
2017-12-11 17:59:32 +01:00
Tobias Koppers 515a07adbf fix non-harmony import() handling for `null` 2017-12-04 15:49:34 +01:00
Tobias Koppers 3803c8ad4e handle non-esm correctly in import()
return namespace object in normal import() and context import()
add namespaceObject flag to ContextModule options
change tests for updated behavior
2017-12-04 12:58:32 +01:00
Tobias Koppers b608ee7f7b add resourceQuery to ContextModule identifier 2017-12-04 12:04:35 +01:00
Tobias Koppers 5e39ec46ee Allow to override resolve configuration 2017-11-18 08:12:35 +01:00
Tobias Koppers 33c7970c0d
Merge pull request #5732 from anuraaga/context-query
Support resourceQuery in context dependencies.
2017-11-16 14:16:19 +01:00
Anuraag Agrawal ce266cb6f6 Support resourceQuery in context dependencies. 2017-11-16 15:20:50 +09:00
Tobias Koppers 41a1d602e1 added WebAssembly Proof of Concept 2017-11-10 09:17:11 +01:00
Tobias Koppers 860da9baaa
Merge branch 'next' into refactor/sets 2017-11-08 21:28:51 +01:00
Tobias Koppers f7c2f8e470 Update code style to arrow functions 2017-11-08 11:56:01 +01:00
Tobias Koppers 447d85ad79 Merge branch 'next' into refactor/sets
# Conflicts:
#	lib/ContextModule.js
#	lib/NormalModule.js
#	lib/optimize/ConcatenatedModule.js
2017-11-08 06:01:24 +01:00
Tobias Koppers 51c572c4f5 refactor more properties to Sets 2017-11-07 09:17:12 +01:00
Tobias Koppers 0339d4da49 Refactor weird things
* Declare used properties in constructor
* Module.(re)building moved into Compilation._(re)buildingModules (Map)
* Make NormalModule.error private
* Move Module.cacheable logic into needRebuild
* More stable implemention of rebuildModule
* addModuleChain waits for Module building finished before returning
* Set built and cacheable flags correctly in Modules
* More portableId into WeakMap
* Add ModuleReason for entrypoints
* cacheable can be true/false/null in Stats
* added Stats module issuerPath
* fixes profile in stats output
2017-11-06 13:16:09 +01:00
Tobias Koppers ea56916d53 rename `async` to `mode` in context options
`async: false` is now `mode: "sync"`
2017-10-16 14:49:51 +02:00
Tobias Koppers 47d00a525f use util.deprecate to deprecate properties in ContextModule 2017-10-16 12:16:07 +02:00
Tobias Koppers aa8d076407 fix comment 2017-10-16 09:36:59 +02:00
Landon Crapo 0a141f21c8 fixed failing tests 2017-10-13 17:51:01 -06:00
Landon Crapo bc6c1be90c refactoring filter to include and other requested changes 2017-10-13 15:41:44 -06:00
Landon Crapo 5d1759fd4c modified import context filtering logic to filter on file names. 2017-10-13 15:41:02 -06:00
Tobias Koppers 72544de846 code cleanup 2017-07-26 15:13:39 +02:00
Tobias Koppers 94e0fcb80a rename eager-weak to weak in import() comment
rename ImportEagerWeak to ImportWeak
rename "eager-weak" asyncMode to "async-weak"

weak dependencies don't need to be in dependencies blocks
2017-07-26 14:49:37 +02:00
James Gillmore 8bca2dc95c fix/feat($weak): add context support for resolveWeak + create eager-weak asyncMode 2017-07-26 13:12:59 +02:00
James Gillmore 1102e60395 fix($lint): fix linting errors 2017-07-26 13:12:59 +02:00
James Gillmore 4636e5a705 feat($weakContext): create "weak-context" asyncMode for universal rendering 2017-07-26 13:12:59 +02:00
Tobias Koppers 22e7d254ee Add webpackMode optios for import()
Allow lazy, lazy-once and eager mode for import()
Fix a bug which caused context chunks to be merged when using chunk name
Allow to work in env where there is no Promise.resolve
2017-05-05 09:03:24 +02:00
J Huang 6afc397b99 perf: use Date.now() instead of new Date().getTime()
new Date().getTime() is 2x slower than Date.now(), see https://jsperf.com/new-date-vs-date-now-vs-performance-now/6
2017-05-04 10:19:54 +08:00
mc-zone b65432a2f1 Add specify chunk name feature for `import()`
Add specify chunk name feature for `import()` by following special comment block after the param:

  import('./foo' /* webpackChunkName = "myChunkName" */)

Thus we can use chunk name like `requre.ensure` and avoid conflicts with the specification.
2017-03-26 17:18:30 +08:00
Tobias Koppers b732e1b25b rename count to size 2017-02-28 12:07:27 +01:00
Tim Sebastian 1e906f1468 apply review changes 2017-02-23 21:52:11 +11:00
Tim Sebastian c29f324f07 set dependencies to empty array if they dont exist
no need to check them in size calculation for existance anymore
2017-02-19 11:00:06 +11:00
Tim Sebastian d424633467 rename hasMultipleChunks to hasMultipleOrNoChunks 2017-02-18 23:01:29 +11:00
Tim Sebastian 833c0330fd refactor source method of contextmodule 2017-02-18 22:41:39 +11:00
Tim Sebastian f77775d0f6 refactor `size` 2017-02-18 21:13:39 +11:00
Tim Sebastian a61ec92a0a simplify build by early returning if no dependencies exist 2017-02-18 21:09:18 +11:00
Tim Sebastian 4d6fafe1b5 simplify identifiers 2017-02-18 20:29:21 +11:00
Tim Sebastian a3f0da5b89 describe prettyRegExp and give param an better name 2017-02-18 20:26:47 +11:00
Tim Sebastian 084d11231b cleanup contextify usage by passing context directly as parameter 2017-02-18 20:15:29 +11:00
Tim Sebastian 4cd13ca651 refactor ContextModule to esnext 2017-02-18 20:14:43 +11:00
Tobias Koppers 8e69a80847 code linting 2017-01-11 12:29:01 +01:00
Tobias Koppers da29d21ae4 performance improvements
breaking change: Module has now a "unbuild" method that must work correctly
2016-12-14 16:22:16 +01:00
Tobias Koppers 4414de18ba support lib ids for context modules 2016-12-14 12:03:56 +01:00
Matthew Pietz 6c6eb3ae98 Escape webpackContext.id value 2016-12-08 12:14:51 -08:00
Noah Fontes ab9aef1140 Fix issue with async dynamic System.import dependencies not being re-emitted 2016-06-28 10:42:35 -07:00
Tobias Koppers c46e3e82c0 fixed System.import context
fixed #2490
2016-06-05 09:15:17 +02:00
e-cloud 13322ca35c add missing constructors for all classes needed
As i walk through the source, i've tried to trace the webpack running stack.
Then, i find the missing constructors result in uncleasr stack and create a patch
for them.
2016-05-20 13:39:36 +08:00
Tobias Koppers 93f38132d1 fixed #2443 2016-05-14 14:41:31 +02:00
Tobias Koppers ce642eced6 reverted module.e to module.exports
because it causes issues with modules that define
exports on the module object
2016-04-21 23:50:40 +02:00
Tobias Koppers 902220a0ea smaller bundles by using module.e instead of module.exports
same for module.loaded and module.id
2016-02-13 13:11:34 +01:00
Tobias Koppers a4cc54e759 added manual context map option to ContextReplacementPlugin 2016-01-06 19:56:17 +01:00
Tobias Koppers ded70aef28 moves stuff from webpack-core to webpack-sources 2015-12-29 17:44:55 +01:00
Tobias Koppers 4c69156172 fixed #1769 2015-12-22 11:00:48 +01:00
Tobias Koppers f3197f5313 typo 2015-09-03 11:36:02 +02:00
Tobias Koppers 431a4c791c Merge branch 'master' into webpack-2
Conflicts:
	hot/dev-server.js
	hot/only-dev-server.js
	hot/poll.js
	hot/signal.js
	lib/ChunkTemplate.js
	lib/HotModuleReplacement.runtime.js
	lib/HotModuleReplacementPlugin.js
	lib/JsonpMainTemplatePlugin.js
	lib/MainTemplate.js
	lib/NormalModule.js
	lib/Parser.js
	lib/RecordIdsPlugin.js
	lib/WebpackOptionsApply.js
	lib/dependencies/RequireEnsureDependency.js
	lib/node/OldNodeWatchFileSystem.js
	lib/optimize/OccurrenceOrderPlugin.js
	package.json
2015-07-17 09:30:37 +02:00
Tobias Koppers f7d799adb4 rebeautify without spacing after keyword 2015-07-16 00:19:23 +02:00
Avi Haiat 0a340f2b1a feat(app): Beautify all lib files 2015-07-13 01:20:09 +03:00
Tobias Koppers d98df52a49 added System.import API and async context 2015-07-01 00:19:52 +02:00
Tobias Koppers 2245c4acca Promise based chunk loading API
don't flag entry module with `0` id anymore
use extra argument in chunk instead
this allows to require entry points
2015-06-13 11:45:28 +02:00
Tobias Koppers d3a7994e35 expose `loc` for every Dependency 2015-05-10 18:31:58 +02:00
Tobias Koppers cebd3b9722 added linting 2015-04-23 23:55:50 +02:00
Tobias Koppers c0686c4430 support an empty context
fixed #524
2014-10-12 11:24:42 +02:00
Tobias Koppers 63e2dd3804 better gzip for context 2014-09-26 08:52:47 +02:00
Mark Marijnissen 8fbfbc9e34 Update ContextModule.js
added semicolon
2014-09-15 17:59:49 +02:00
Mark Marijnissen aa39f79baf Add 'id' attribute to require.context (so HMR can accept a context) 2014-09-14 01:50:59 +02:00
Tobias Koppers 61bc53e875 Shorter and faster empty context
#198
2014-07-26 14:48:42 +02:00
Tobias Koppers d80cdcefac Code Quality 2014-06-24 18:53:32 +02:00
Tobias Koppers 0fea43b4cb rename generated require to __webpack_require__
fixes #141
fixes RubenVerborgh/N3.js#18
2014-03-03 14:56:17 +01:00
Tobias Koppers 074a26efb5 Performance #106 2013-10-14 13:59:44 +02:00
Tobias Koppers 0de7c73ad8 SourceMap support 2013-03-26 16:54:41 +01:00
Tobias Koppers f3213f2d00 create context for more stuff 2013-02-20 20:40:40 +01:00
Tobias Koppers 90f8a42ab3 fixed some examples stuff 2013-02-13 11:51:08 +01:00
Tobias Koppers 453c0226aa Fix context modules 2013-02-04 12:34:20 +01:00
Tobias Koppers e8f0e1d7cf fix watching 2013-02-01 08:03:38 +01:00
Tobias Koppers 961ad40966 file watching 2013-01-31 18:00:22 +01:00