Commit Graph

219 Commits

Author SHA1 Message Date
Tobias Koppers fe80339d71 use - instead of ~ as default for better compat
fix automaticNameDelimiter in splitChunks
fix test cases
2018-12-07 14:46:49 +01:00
Tobias Koppers 8281667668 improve ids for Long Term Caching
add deterministic chunk ids and make it default
StatsTestCases no longer need to explicitly use natural ids as the defaults are deterministic now too
add concept of id name hints for chunks
add `idHint` option to splitChunks to provide a hint
deduplicated code from different id plugins to IdHelpers
improve behavior of named ids in case of conflicts
remove `name: true` and `automaticNamePrefix` from splitChunks it's not as good as expected
improve named chunk ids to show root modules
2018-12-07 12:26:35 +01:00
Florent Cailhol 002128c288 Do not polyfill node bindings by default 2018-12-07 08:58:26 +01:00
Tobias Koppers e5e648061c
Merge pull request #8448 from sodatea/wasm-resolve
fix: `.wasm` extension should have lower priority when resolving modules
2018-12-05 12:36:11 +01:00
Haoqun Jiang 8a083ff48c
fix: also change WebpackOptionsDefaulter 2018-12-01 18:40:17 +08:00
Ed Morley 311a7285d3 Switch from uglifyjs-webpack-plugin to terser-webpack-plugin
Some history:
* `uglifyjs-webpack-plugin` < v1.0 used the minifier `uglify-js`
* however `uglify-js` does not support ES6, which resulted in a fork
  called `uglify-es` that was developed in the `uglify-js` repository,
  but under the `harmony` branch
* `uglifyjs-webpack-plugin` v1.x switched to `uglify-es` for ES6 support
* however `uglify-es` stopped being maintained:
  https://github.com/mishoo/UglifyJS2/issues/3156#issuecomment-392943058
* which led to a fork called `terser` that has incorporated all of
  the unmerged PRs and will be where all new development occurs:
  https://github.com/fabiosantoscode/terser
* `terser-webpack-plugin` was created, which is the `terser` equivalent
  of `uglifyjs-webpack-plugin`:
  https://github.com/webpack-contrib/terser-webpack-plugin
* `uglifyjs-webpack-plugin` v2.x will be switching back to `uglify-js`,
  so any project that needs to support ES6 now needs to switch to
  `terser-webpack-plugin`.

Fixes #7923.
2018-11-18 22:56:10 +03:00
Florent Cailhol caefde17ab Remove devtoolLineToLine and lineToLine options 2018-11-12 14:26:31 +01:00
Tobias Koppers cc28367a78
Merge pull request #8109 from webpack/refactor/templatedPaths
refactor(TemplatedPathPlugin): split placeholder context (`chunk|module`)
2018-11-05 09:03:00 +01:00
Tobias Koppers fe66257770
Merge pull request #8276 from smelukov/deterministic-module-ids-in-prod
Set deterministic module ids in prod by default
2018-11-05 08:09:57 +01:00
Tobias Koppers 5da271287c use not deprecated default 2018-11-01 20:23:10 +01:00
Tobias Koppers 02ba24aca8 add a `cache` option to control the resolve cache 2018-10-31 13:55:28 +01:00
Tobias Koppers 3b35fd478c use module.unsafeCache only for node_modules
remove unsafe resolve cache remainings
2018-10-31 13:17:32 +01:00
Tobias Koppers 2688b5b17f add resolver cache 2018-10-30 15:43:26 +01:00
Sergey Melyukov 8b962a61b5 Set deterministic module ids in prod by default 2018-10-25 17:56:59 +03:00
Tobias Koppers b536fe7aee default cache.name to name + mode 2018-10-17 21:25:40 +02:00
Tobias Koppers a852828279 add persistent caching prototype 2018-10-17 21:25:39 +02:00
Tobias Koppers 19d60ba0cd Merge tag 'v4.19.1' into next
4.19.1
2018-09-18 10:13:54 +02:00
Sharang Dashputre bb4c2d18f7 Correctly set the 'browser' value for electron-renderer 2018-09-16 18:30:24 +05:30
Ed Morley 79910c6ba5 Switch from uglifyjs-webpack-plugin to terser-webpack-plugin
Some history:
* `uglifyjs-webpack-plugin` < v1.0 used the minifier `uglify-js`
* however `uglify-js` does not support ES6, which resulted in a fork
  called `uglify-es` that was developed in the `uglify-js` repository,
  but under the `harmony` branch
* `uglifyjs-webpack-plugin` v1.x switched to `uglify-es` for ES6 support
* however `uglify-es` stopped being maintained:
  https://github.com/mishoo/UglifyJS2/issues/3156#issuecomment-392943058
* which led to a fork called `terser` that has incorporated all of
  the unmerged PRs and will be where all new development occurs:
  https://github.com/fabiosantoscode/terser
* `terser-webpack-plugin` was created, which is the `terser` equivalent
  of `uglifyjs-webpack-plugin`:
  https://github.com/webpack-contrib/terser-webpack-plugin
* `uglifyjs-webpack-plugin` v2.x will be switching back to `uglify-js`,
  so any project that needs to support ES6 now needs to switch to
  `terser-webpack-plugin`.

Fixes #7923.
2018-09-15 12:29:14 +01:00
Tobias Koppers cf5f1d723c format existing code 2018-07-30 21:29:21 +02:00
Tobias Koppers 6d9e4f315b Use natural module/chunk ids in mode none 2018-07-27 12:27:57 +02:00
Tobias Koppers 5e72a6505a remove deprecated optimization options
and update test cases
2018-07-16 10:32:02 +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 3366421f17
Merge pull request #7663 from webpack/feature/automatic-name-prefix
automaticNamePrefix and name merging bugfix
2018-07-10 20:45:52 +02:00
Tobias Koppers 9f0056b10d
Merge pull request #7686 from webpack/feature/module-chunk-ids-option
add new options moduleIds and chunkIds
2018-07-10 10:19:03 +02:00
Raanan Weber fa7cf3b218
formatting 2018-07-09 17:50:13 +02:00
Raanan Weber c12ab8d5e4 Recursive getDevtoolNamespace
Supporting the case where options.output.library.root is an Array:

```javascript
output: {
  library: {
    root: ["MyLibrary", "Sub"],
    amd: "my-library",
    commonjs: "my-common-library"
  },
  libraryTarget: "umd"
}
```
2018-07-09 17:28:32 +02:00
Tobias Koppers 3fc4eb752f add new options moduleIds and chunkIds
deprecate namedModules, hashedModuleIds, namedChunks
add a lot of TODOs for webpack 5
split OccurenceOrderPlugin into separate plugins for modules and chunks
add NaturalChunkOrderPlugin and enable it in development
2018-07-09 15:06:19 +02:00
Tobias Koppers 14968acc00 add automaticNamePrefix option
allow automaticNameDelimiter on cacheGroup level
2018-07-05 14:13:13 +02:00
Tobias Koppers 0a06f19fd8 Merge tag 'v4.15.0' into next
4.15.0
2018-07-04 22:19:50 +02:00
Tobias Koppers f0ae54d478 Merge tag 'v4.13.0' into next
4.13.0
2018-07-04 22:08:31 +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
Tobias Koppers 2aac83bd95 rename optimization.splitChunks.cacheGroups.vendors -> defaultVendors
add automaticNamePrefix option
allow automaticNameDelimiter on cacheGroup level
2018-07-02 10:15:13 +02:00
Florent Cailhol b9b81b4002 Do not set nodeEnv when 'mode=none' 2018-06-27 11:18:20 +02:00
byzyk 1fd67d6ddc update defaults in Defaulter 2018-06-26 14:00:48 +04:00
evilebottnawi 07a50001f0 remove comment 2018-06-15 18:55:25 +03:00
Tobias Koppers 5c604f93f6
Merge branch 'master' into feat-implement-option-for-hashed-module-ids-plugin 2018-06-07 14:21:09 +02:00
Tobias Koppers 8e3be48da4 allow to disable wasm import mangle
disable it by default (temporary)
2018-06-05 23:49:02 +02:00
Tobias Koppers 78b31936c3 add checkWasmTypes flag, enabled it only in production 2018-06-04 20:14:08 +02:00
Florent Cailhol 0743250281 Add a test case about nodeEnv 2018-06-04 09:49:08 +02:00
Florent Cailhol 2a9452e51b Add brackets for multiline if/for statements 2018-05-29 15:45:44 +02:00
evilebottnawi c222a6f33b feat: implement option for `HashedModuleIdes` plugin 2018-05-25 16:41:20 +03:00
Tobias Koppers 64925a80c7 remove request limit and decrease size limit in development mode
because this improves performance as more files are generated
which can be regenerated separately
2018-05-01 10:54:00 +02:00
Tobias Koppers c47150c42c Clone optimization config in Defaulter
#6565
2018-04-17 11:39:25 +02:00
bastimeyer 70d48256d7 Fix output.globalObject value in node-webkit 2018-04-14 21:27:24 +02:00
Tobias Koppers b30de38eb5
Merge pull request #6672 from EugeneHlushko/fix/6639
fix(bug): chunkFilename as function doesn't work
2018-03-29 11:01:36 +02:00
Tobias Koppers fc2feaf6d7
Merge pull request #6844 from swederik/issue-6843
Add handling for devtool source-map with library specified as Object
2018-03-26 15:47:14 +02:00
Erik Ziegler 7fcd28128a fix: Add handling for devtool source-map with library specified as Object (#6843) 2018-03-23 10:06:39 +01:00
Florent Cailhol e4808b2e57 Read 'browser' main field when target is 'electron-renderer'
Fixes #6811
2018-03-21 10:35:09 +01:00
Tobias Koppers c65fb74a26
Merge pull request #6736 from mc-zone/improvment/performance-falsy-at-non-web-target
Make the `performance` default to false while at non-web target. Close #6715
2018-03-14 11:52:34 +01:00
mc-zone 2ecd323a38 Adjusting the default of performance; improve tests to cover different mode and target. 2018-03-13 23:48:33 +08:00
mc-zone 7c0c1a089e Options: default performance to false if not the web/webworker target(#6715) 2018-03-12 21:16:01 +08:00
Manuel Bauer bda8d52810 Added chunkFilenameDelimiter option for SplitChunksPlugin: Applied requested changes 2018-03-12 10:07:31 +01:00
Manuel Bauer 36db321e9c Added chunkFilenameDelimiter option for SplitChunksPlugin 2018-03-09 10:12:23 +01:00
EugeneHlushko aa55324cfc fix(bug): don't default chunkFileName to a filename typeof function 2018-03-07 21:23:00 +02:00
EugeneHlushko f78cf75177 fix(bug): don't default chunkFileName to a filename typeof function 2018-03-07 09:56:04 +02:00
Tobias Koppers 4f399322ad
Merge pull request #6641 from tmilloff/master
Fix #6634
2018-03-06 12:25:19 +01:00
Jason Milloff 57c6c4323c Add requested changes from PR comments 2018-03-05 11:45:20 -05:00
Connor Clark 17d03c1b24 defaults: set source map option for UglifyJs to true if SourceMapDevToolPlugin exists #6627 2018-03-01 16:08:49 -08:00
Jason Milloff fc0b327d82 Fix #6634 2018-03-01 16:07:24 -05:00
Tobias Koppers 5238159d21 run prettier on existing code 2018-02-25 02:00:20 +01:00
Florent Cailhol 40ee8c76d2 Use MD4 for hashing 2018-02-22 11:27:11 +01:00
Tobias Koppers 244d27a42d improve way of getting combinations of chunks
we no longer require a complexity limit -> maxComplexity removed
2018-02-17 10:16:32 +01:00
Tobias Koppers 1e73752fb2 improve chunk splitting
by also trying to select combinations of module chunks
(limited by complexity)
fix size ordering (was reversed)
add chunk cound ordering
2018-02-17 07:01:00 +01:00
Sean Larkin 331c011009
Update WebpackOptionsDefaulter.js 2018-02-13 13:17:55 -08:00
Sean Larkin e8b9b22f45
Set nodeEnv to default to "production" 2018-02-13 12:50:16 -08:00
Tobias Koppers 9599e4eb61 fix typo: mergedDuplicateChunks -> mergeDuplicateChunks 2018-02-13 12:41:30 +01:00
Tobias Koppers 0f88f8db74
Merge pull request #6468 from webpack/bugfix/issue-6459
fixes #6459
2018-02-09 20:23:09 +01:00
Tobias Koppers 85ff5507a5 fixes #6459 2018-02-09 18:01:31 +01:00
Tobias Koppers 08f5ad9fb4
Revert "Wrap default entry property in array" 2018-02-09 16:48:39 +01:00
Sean Larkin 9df87ad3dc
Merge pull request #6394 from webpack/TheLarkInn-patch-1
Wrap default entry property in array
2018-02-06 08:01:41 +01:00
Ben Rothman 5ee61f8910 add "multiple" string option for runtimeChunk config 2018-02-01 11:11:16 -06:00
Tobias Koppers 9fde04d299 handle single option in options defaulter
change runtime chunk naming schema
2018-02-01 17:53:15 +01:00
Sean Larkin 2a46d098d2
Wrap default entry property in array
This makes webpack-serve happier.
2018-01-26 16:06:24 -08:00
Tobias Koppers b28435eb32 make default cache group explicit
add priority
using cacheGroups doesn't override default cache groups
2018-01-20 13:13:10 +01:00
Tobias Koppers fabd1abb41 improvements from review by @ooflorent 2018-01-20 11:28:45 +01: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
Tobias Koppers 7112943ca4
Merge pull request #6298 from EugeneHlushko/refactor/indexof-to-includes
Refactor/indexof to includes
2018-01-11 22:45:02 +01:00
EugeneHlushko 2aab060f26 Refactor: indexOf >< checks to includes 2018-01-11 18:58:39 +02:00
Tobias Koppers 417044f065 add AutomaticCommonsChunksPlugin
enable it by default for async chunks
add options for initial chunks
2018-01-10 18:58:26 +01:00
Tobias Koppers 45f8a28b44 Merge branch 'master' into next
# Conflicts:
#	lib/JsonpMainTemplatePlugin.js
#	lib/NoEmitOnErrorsPlugin.js
2018-01-04 20:59:34 +01:00
Neehar Venugopal 8eb0bb675e move default script type option to WebpackOptionsDefaulter 2018-01-04 20:00:50 +05:30
Tobias Koppers 002f45ae72 change "defaultedProduction" to undefined
inline mode file
fix testcase
2018-01-03 16:43:24 +01:00
Tobias Koppers ff908decb3
Merge branch 'next' into feature/add-entry-default-value 2018-01-03 15:41:45 +01:00
Sean Larkin bb778b0da6 warn on mode being defaulted to production explicitly vs not being used 2017-12-30 18:42:01 -06:00
Tobias Koppers d95f93f8cb add output.globalObject configuration option
remove deprecated atom and electron target
add self libraryTarget
add self external type
2017-12-27 18:46:37 +01:00
Sean Larkin 5e8700f5c5 feat(defaults): add fixed defaults 2017-12-18 12:18:07 -08:00
Joshua Wiens b319ea6c1c refactor: Enables uglify thread pool by default 2017-12-18 00:49:48 -06:00
Joshua Wiens bf93a87a1d perf: Enables uglify cache in prod mode 2017-12-17 08:48:01 -06:00
Tobias Koppers 5de82eb251 remove no extensions "feature" from mjs 2017-12-14 12:40:12 +01:00
Tobias Koppers 2148f556a4 Enable minimizing in production mode 2017-12-14 00:06:56 +01:00
Tobias Koppers fabe631a83 Only generate portable records when needed 2017-12-01 11:27:03 +01:00
Tobias Koppers e1de04853a omit determining size for non-production builds 2017-12-01 11:27:02 +01:00
Tobias Koppers 2201b860a5 Add mode option and choose defaults depending on mode
add optimization options
use development mode for watch/hot/config tests
use production mode for integration/stats tests
create output directory if not existing
move __esModule to runtime
fix dependency behavior for cases without usedExports
2017-11-24 08:17:17 +01:00
Tobias Koppers 6dc350ddb7 mjs can't import modules without extension 2017-11-23 12:03:34 +01:00
Tobias Koppers ccbc07c239 add wasm extensions as default 2017-11-22 21:37:39 +01:00
Tobias Koppers 5e39ec46ee Allow to override resolve configuration 2017-11-18 08:12:35 +01:00
Tobias Koppers 982e44f670
Merge branch 'next' into master 2017-11-16 14:17:29 +01:00
Tobias Koppers 00f2b5ede7 advanced module type refactoring
added json type
.mjs default to javascript/esm type
adjusted parser plugins to react on module type
2017-11-11 19:27:19 +01:00
Tobias Koppers 41a1d602e1 added WebAssembly Proof of Concept 2017-11-10 09:17:11 +01:00