You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Now: webpack removes the dead code (in some cases)
This prevents crashing when import() occur in a dead branch
Syntax
webpackInclude and webpackExclude are supported by the magic comment for import(). They allow to filter files when using a dynamic expression.
Using System.import() now emits a warning
You can disable the warning with Rule.parser.system: true
You can disable System.import with Rule.parser.system: false
Configuration
Resolving can now be configured with module.rules[].resolve. It's merged with the global configuration.
optimization.minimize has been added to switch minimizing on/off
By default: on in production mode, off in development mode
optimization.minimizer has been added to configurate minimizers and options
Usage
Some Plugin options are now validated
CLI has been move to webpack-cli, you need to install webpack-cli to use the CLI
The ProgressPlugin (--progress) now displays plugin names
At least for plugins migrated to the new plugin system
Performance
UglifyJs now caches and parallizes by default
Multiple performance improvements, especially for faster incremental rebuilds
performance improvement for RemoveParentModulesPlugin
Stats
Stats can display modules nested in concatenated modules
Features
Configuration
Module type is automatically choosen for mjs, json and wasm extensions. Other extensions need to be configured via module.rules[].type
Incorrect options.dependencies configurations now throw error
sideEffects can be overriden via module.rules
output.hashFunction can now be a Constructor to a custom hash function
You can provide a non-cryto hash function for performance reasons
add output.globalObject config option to allow to choose the global object reference in runtime exitCode
Runtime
Error for chunk loading now includes more information and two new properties type and request.
Devtool
remove comment footer from SourceMaps and eval
add support for includetest and exclude to the eval source map devtool plugin
Performance
webpacks AST can be passed directly from loader to webpack to avoid extra parsing
Unused modules are no longer unnecessarly concatenated
Add a ProfilingPlugin which write a (Chrome) profile file which includes timings of plugins
Migrate to using for of instead of forEach
Migrate to using Map and Set instead of Objects
Migrate to using includes instead of indexOf
Replaced some RegExp with string methods
Queue don't enqueues the same job twice
Use faster md4 hash for hashing by default
Optimization
When using more than 25 exports mangled export names are shorter.
script tags are no longer text/javascript and async as this are the default values (saves a few bytes)
The concatenated module now generates a bit less code
constant replacements now don't need __webpack_require__ and argument is omitted
Defaults
webpack now looks for the .wasm, .mjs, .js and .json extensions in this order
output.pathinfo is now on by default in develoment mode
in-memory caching is now off by default in production
entry defaults to ./src
output.path defaults to ./dist
Use production defaults when omiting the mode option
Usage
Add detailed progress reporting to SourceMapDevToolPlugin
removed plugins now give a useful error message
Stats
Sizes are now shown in kiB instead of kB in Stats
entrypoints are now shows by default in Stats
chunks now display <{parents}>>{children}< and ={siblings}= in Stats
add buildAt time to stats
stats json now includes the output path
Syntax
A resource query is supported in context
Referencing entry point name in import() now emits a error instead of a warning
Upgraded to acorn 5 and support ES 2018
Plugins
done is now an async hook
Bugfixes
Generated comments no longer break on */
webpack no longer modifies the passed options object
Compiler "watch-run" hook now has the Compiler as first parameter
add output.chunkCallbackName to the schema to allow configurating WebWorker template
Using module.id/loaded now correctly bails out of Module Concatentation (Scope Hoisting)
OccurenceOrderPlugin now sorts modules in correct order (instead of reversed)
timestamps for files are read from watcher when calling Watching.invalidate
fix incorrect -! behavior with post loaders
add run and watchRun hooks for MultiCompiler
this is now undefined in ESM
VariableDeclaration are correctly identified as var, const or let
Parser now parse the source code with the correct source type (module/script) when the module type javascript/dynamic or javascript/module is used.
don't crash on missing modules with buildMeta of null
add original-fs module for electron targets
HMRPlugin can be added to the Compiler outside of plugins
Internal changes
Replaced plugin calls with tap calls (new plugin system)
Migrated many deprecated plugins to new plugin system API
added buildMeta.exportsType: "default" for json modules
Remove unused methods from Parser (parserStringArray, parserCalculatedStringArray)
Remove ability to clear BasicEvaluatedExpression and to have multiple types
Buffer.from instead of new Buffer
Avoid using forEach and use for of instead
Use neo-async instead of async
Update tapable and enhanced-resolve dependencies to new major versions
Use prettier
Removed features
removed module.loaders
removed loaderContext.options
removed Compilation.notCacheable flag
removed NoErrorsPlugin
removed Dependency.isEqualResource
removed NewWatchingPlugin
removed CommonsChunkPlugin
Breaking changes for plugins/loaders
new plugin system
plugin method is backward-compatible
Plugins should use Compiler.hooks.xxx.tap(<plugin name>, fn) now
New major version of enhanced-resolve
Templates for chunks may now generate multiple assets
Chunk.chunks/parents/blocks are no longer Arrays. A Set is used internally and there are methods to access it.
Parser.scope.renames and Parser.scope.definitions are no longer Objects/Arrays, but Map/Sets.
Parser uses StackedSetMap (LevelDB-like datastructure) instead of Arrays
Compiler.options is no longer set while applying plugins
Harmony Dependencies has changed because of refactoring
Dependency.getReference() may now return a weak property. Dependency.weak is now used by the Dependency base class and returned in the base impl of getReference()
Constructor arguments changed for all Modules
Merged options into options object for ContextModule and resolveDependencies
Changed and renamed dependencies for `import()
Moved Compiler.resolvers into Compiler.resolverFactory accessible with plugins
Dependency.isEqualResource has been replaced with Dependency.getResourceIdentifier
Methods on Template are now static
A new RuntimeTemplate class has been added and outputOptions and requestShortener has been moved to this class
Many methods has been updated to use the RuntimeTemplate instead
We plan to move code which accesses the runtime to this new class
Module.meta has been replaced with Module.buildMeta
Module.buildInfo and Module.factoryMeta have been added
Some properties of Module have been moved into the new objects
added loaderContext.rootContext which points to the context options. Loaders may use it to make stuff relative to the application root.
add this.hot flag to loader context when HMR is enabled
buildMeta.harmony has been replaced with buildMeta.exportsType: "namespace
The chunk graph has changed:
Before: Chunks were connected with parent-child-relationships.
Now: ChunkGroups are connected with parent-child-relationships. ChunkGroups contain Chunks in order.
Before: AsyncDependenciesBlocks reference a list of Chunks in order.
Now: AsyncDependenciesBlocks reference a single ChunkGroup.
file/contextTimestamps are Maps now
map/foreachChunks/Modules/Parents methods are now deprecated/removed
NormalModule accept options object in Constructor
Added required generator argument for NormalModule
Added createGenerator and generator hooks for NormalModuleFactory to customize code generation
Allow to customize render manifest for Chunks via hooks
The text was updated successfully, but these errors were encountered:
There are new versions of webpack available from npm.
4.0.0
Big changes
mode
or--mode
) between two modes now: production or developmentoptimization.*
(build your custom mode)process.env.NODE_ENV
are set to production or development (only in built code, not in config)none
mode which disables everythingimport()
always returns a namespace object. CommonJS modules are wrapped into the default exportimport()
NoEmitOnErrorsPlugin
->optimization.noEmitOnErrors
(on by default in production mode)ModuleConcatenationPlugin
->optimization.concatenateModules
(on by default in production mode)NamedModulesPlugin
->optimization.namedModules
(on by default in develoment mode)CommonsChunkPlugin
was removed ->optimization.splitChunks
,optimization.runtimeChunk
type: "javascript/auto"
when transforming JSON via loader to JSBig features
javascript/esm
handles ESM more strictly compared tojavascript/auto
:default
import, everything else (including namespace import) emit errors.mjs
modules arejavascript/esm
by defaultimport()
sideEffects: false
is now supported in package.jsonsideEffects
in package.json also supports glob expressions and arrays of glob expressionsoptimization.splitChunks
option was introducedDetails: https://gist.github.com/sokra/1522d586b8e5c0f5072d7565c2bee693
import()
occur in a dead branchwebpackInclude
andwebpackExclude
are supported by the magic comment forimport()
. They allow to filter files when using a dynamic expression.System.import()
now emits a warningRule.parser.system: true
System.import
withRule.parser.system: false
module.rules[].resolve
. It's merged with the global configuration.optimization.minimize
has been added to switch minimizing on/offoptimization.minimizer
has been added to configurate minimizers and optionswebpack-cli
to use the CLI--progress
) now displays plugin namesFeatures
module.rules[].type
options.dependencies
configurations now throw errorsideEffects
can be overriden via module.rulesoutput.hashFunction
can now be a Constructor to a custom hash functionoutput.globalObject
config option to allow to choose the global object reference in runtime exitCodetype
andrequest
.include
test
andexclude
to the eval source map devtool pluginfor of
instead offorEach
Map
andSet
instead of Objectsincludes
instead ofindexOf
text/javascript
andasync
as this are the default values (saves a few bytes)__webpack_require__
and argument is omitted.wasm
,.mjs
,.js
and.json
extensions in this orderoutput.pathinfo
is now on by default in develoment modeentry
defaults to./src
output.path
defaults to./dist
production
defaults when omiting themode
option<{parents}>
>{children}<
and={siblings}=
in StatsbuildAt
time to statsimport()
now emits a error instead of a warningdone
is now an async hookBugfixes
*/
output.chunkCallbackName
to the schema to allow configurating WebWorker templatemodule.id/loaded
now correctly bails out of Module Concatentation (Scope Hoisting)Watching.invalidate
-!
behavior with post loadersrun
andwatchRun
hooks forMultiCompiler
this
is now undefined in ESMvar
,const
orlet
javascript/dynamic
orjavascript/module
is used.buildMeta
of nulloriginal-fs
module for electron targetsplugins
Internal changes
plugin
calls withtap
calls (new plugin system)buildMeta.exportsType: "default"
for json modulesneo-async
instead ofasync
Removed features
module.loaders
loaderContext.options
Compilation.notCacheable
flagNoErrorsPlugin
Dependency.isEqualResource
NewWatchingPlugin
CommonsChunkPlugin
Breaking changes for plugins/loaders
plugin
method is backward-compatibleCompiler.hooks.xxx.tap(<plugin name>, fn)
nowChunk.chunks/parents/blocks
are no longer Arrays. A Set is used internally and there are methods to access it.Parser.scope.renames
andParser.scope.definitions
are no longer Objects/Arrays, but Map/Sets.StackedSetMap
(LevelDB-like datastructure) instead of ArraysCompiler.options
is no longer set while applying pluginsDependency.getReference()
may now return aweak
property.Dependency.weak
is now used by theDependency
base class and returned in the base impl ofgetReference()
Module
sContextModule
andresolveDependencies
Compiler.resolvers
intoCompiler.resolverFactory
accessible with pluginsDependency.isEqualResource
has been replaced withDependency.getResourceIdentifier
Template
are now staticoutputOptions
andrequestShortener
has been moved to this classModule.meta
has been replaced withModule.buildMeta
Module.buildInfo
andModule.factoryMeta
have been addedModule
have been moved into the new objectsloaderContext.rootContext
which points to thecontext
options. Loaders may use it to make stuff relative to the application root.this.hot
flag to loader context when HMR is enabledbuildMeta.harmony
has been replaced withbuildMeta.exportsType: "namespace
map/foreach
Chunks/Modules/Parents
methods are now deprecated/removedcreateGenerator
andgenerator
hooks for NormalModuleFactory to customize code generationThe text was updated successfully, but these errors were encountered: