Update webpack in stacks/frontend/package.json from ^3.11.0 to 4.6.0
Overview
The following dependencies have been updated by dependencies.io:
-
webpack
instacks/frontend/package.json
from "^3.11.0" to "4.6.0"
Details
webpack
This dependency is located in stacks/frontend/package.json
and was updated from "^3.11.0" to "4.6.0".
4.0.0
Big changes
- Environment
- Node.js 4 is no longer supported. Source Code was upgraded to a higher ecmascript version.
- Usage
- You have to choose (
mode
or--mode
) between two modes now: production or development- production enables all kind of optimizations to generate optimized bundles
- development enables comments and hint for development and enables the eval devtool
- production doesn't support watching, development is optimized for fast incremental rebuilds
- production also enables module concatenating (Scope Hoisting)
- You can configure this in detail with the flags in
optimization.*
(build your custom mode) -
process.env.NODE_ENV
are set to production or development (only in built code, not in config) - There is a hidden
none
mode which disables everything
- You have to choose (
- Syntax
-
import()
always returns a namespace object. CommonJS modules are wrapped into the default export- This probably breaks your code, if you used to import CommonJs with
import()
- This probably breaks your code, if you used to import CommonJs with
-
- Configuration
- You no longer need to use these plugins:
-
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
- You no longer need to use these plugins:
- JSON
- webpack now handles JSON natively
- You may need to add
type: "javascript/auto"
when transforming JSON via loader to JS - Just using JSON without loader should still work
- You may need to add
- allows to import JSON via ESM syntax
- unused exports elimination for JSON modules
- webpack now handles JSON natively
- Optimization
- Upgrade uglifyjs-webpack-plugin to v1
- ES15 support
- Upgrade uglifyjs-webpack-plugin to v1
Big features
- Modules
- webpack now supports these module types:
- javascript/auto: (The default one in webpack 3) Javascript module with all module systems enabled: CommonJS, AMD, ESM
- javascript/esm: EcmaScript modules, all other module system are not available
- javascript/dynamic: Only CommonJS and, EcmaScript modules are not available
- json: JSON data, it's available via require and import
- webassembly/experimental: WebAssembly modules (currently experimental)
-
javascript/esm
handles ESM more strictly compared tojavascript/auto
:- Imported names need to exist on imported module
- Dynamic modules (non-esm, i. e. CommonJs) can only imported via
default
import, everything else (including namespace import) emit errors
- In
.mjs
modules arejavascript/esm
by default - WebAssembly modules
- can import other modules (JS and WASM)
- Exports from WebAssembly modules are validated by ESM import
- You'll get a warning/error when trying to import a non-existing export from WASM
- can only be used in async chunks. They doesn't work in initial chunks (would be bad for web performance)
- Import modules using WASM via
import()
- Import modules using WASM via
- This is an experimental feature and subject of change
- webpack now supports these module types:
- Optimization
-
sideEffects: false
is now supported in package.json-
sideEffects
in package.json also supports glob expressions and arrays of glob expressions
-
- Instead of a JSONP function a JSONP array is used -> async script tag support, order no longer matter
- New
optimization.splitChunks
option was introduced Details: https://gist.github.com/sokra/1522d586b8e5c0f5072d7565c2bee693 - Dead branches are now removed by webpack itself
- Before: Uglify removed the dead code
- Now: webpack removes the dead code (in some cases)
- This prevents crashing when
import()
occur in a dead branch
-
- Syntax
-
webpackInclude
andwebpackExclude
are supported by the magic comment forimport()
. 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
withRule.parser.system: false
- You can disable the warning with
-
- 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
- Resolving can now be configured with
- 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
- Module type is automatically choosen for mjs, json and wasm extensions. Other extensions need to be configured via
- Runtime
- Error for chunk loading now includes more information and two new properties
type
andrequest
.
- Error for chunk loading now includes more information and two new properties
- Devtool
- remove comment footer from SourceMaps and eval
- add support for
include
test
andexclude
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 offorEach
- Migrate to using
Map
andSet
instead of Objects - Migrate to using
includes
instead ofindexOf
- 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
andasync
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 themode
option
- webpack now looks for the
- 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
andwatchRun
hooks forMultiCompiler
-
this
is now undefined in ESM - VariableDeclaration are correctly identified as
var
,const
orlet
- Parser now parse the source code with the correct source type (module/script) when the module type
javascript/dynamic
orjavascript/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 withtap
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 ofasync
- 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
andParser.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 aweak
property.Dependency.weak
is now used by theDependency
base class and returned in the base impl ofgetReference()
- Constructor arguments changed for all
Module
s - Merged options into options object for
ContextModule
andresolveDependencies
- Changed and renamed dependencies for `import()
- Moved
Compiler.resolvers
intoCompiler.resolverFactory
accessible with plugins -
Dependency.isEqualResource
has been replaced withDependency.getResourceIdentifier
- Methods on
Template
are now static - A new RuntimeTemplate class has been added and
outputOptions
andrequestShortener
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 withModule.buildMeta
-
Module.buildInfo
andModule.factoryMeta
have been added - Some properties of
Module
have been moved into the new objects - added
loaderContext.rootContext
which points to thecontext
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 withbuildMeta.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/foreach
Chunks/Modules/Parents
methods are now deprecated/removed - NormalModule accept options object in Constructor
- Added required generator argument for NormalModule
- Added
createGenerator
andgenerator
hooks for NormalModuleFactory to customize code generation - Allow to customize render manifest for Chunks via hooks
4.0.1
Features
- add
version
property to webpack exports
Bugfixes
-
import()
with CJS now gives correct exports - Module concatenation bailout messages now point to correct module
4.1.0
Features
- add
filename
option tooptimization.splitChunks
to modify the filename template for splitted chunks - allow modules which doesn't emit code into the bundle
Bugfixes
- watchpack updated to 1.5.0
- performance fix for Module Concatenation (v8 bug)
- fix using
this.xxx
inProvidePlugin
4.1.1
Features
- Stats now displays the number of assets of a module
Bugfixes
-
sourceMap
option of the default UglifyJsPlugin now defaults to true when the SourceMapDevToolPlugin is used -
module.assets
is now working again in the Stats - chunk ids are not stringified on target node
-
devtoolNamespace
default works now also for arrays passed tooutput.library
- Format date with 2 digits in Stats for Build At
- fix a bug renaming classes incorrectly
- fix a bug where modules ignore the
chunks
option ofoptimization.splitChunks
4.2.0
Features
- add
splitChunks.automaticNameDelimiter
to configure the name separator for automatic names -
stats.excludeModules
now also accept booleans - webpack throws an error when trying to run in twice at a time
-
performance
is disabled by default in non-web targets - AMD parser plugins can now be extended by inheriting
Bugfixes
- Fix a race condition when writing
events.json
in ProfilingPlugin - HMR runtime code is reverted to ES5 style
- script timeout is not correctly in seconds
- reexporting JSON exports works correctly now
- fix a bug when combining ProfilingPlugin with SourceMapDevToolPlugin
- add a missing semicolon to the runtime code
4.3.0
Features
- add support for
[contenthash]
placeholder
Bugfixes
-
browser
field is used for targetelectron-renderer
- set
devtoolNamespace
default correctly when passing an object tooutput.library
4.4.0
Features
- When webpack-cli is not installed it will ask to install it
-
splitChunks.chunks
supports a custom function now - Better warning when omitting
mode
Bugfixes
- disallow functions for
chunkFilename
, because it's not working - generate correct code when using
export default (function xxx() {})
Performance
- Performance improvements for sorting by identifier
4.4.1
Bugfixes
- fix yarn/npm install script on windows
4.5.0
Features
- Performance improvements
- Improve readablility of error messages with long loader string
Bugfixes
- Sort child compilations for consistent compilation hash
- Fix bug causing all symbols to be renamed when concatenating modules
Contributing
- add
yarn setup
script for bootstrapping local development
4.6.0
Features
- improve stats output alignment
- improve stats text output when all exports are used
- add
webpackPrefetch
/webpackPreload
magic comments toimport()
- add
stats.entrypoints[].children
andstats.entrypoints[].childAssets
to stats json - add prefetched/preloaded chunks and assets to stats text output
- Performance improvements
Bugfixes
- Escape chunk ids for
target: "webworker"
- fix
this
toundefined
ESM replacement in function default values -
new require(...)
is weird, but now behaves like in node.js - fix behavior of
export * from "commonjs"
with partial override - fixed build time output in current locale in stats text output
- fixed ChunkModuleIdRangePlugin and add tests
- avoid race condition when using the loadModule loader API
- fix default value of
output.globalObject
intarget: "node-webkit"
- fix a bug with
loadModules
and dependencies in these modules - fix hot.accept parser plugin to allow defined values as argument
- print
unknown size
when size is unknown - fix a bug where some chunks were missing in the "single" runtime chunk
- fix cloning of
optimization
configuration
Internal changes
- Set up infrastructure for linting typings with TypeScript