Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Update dependency webpack to ^4.0.0 - autoclosed #718

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 25, 2018

This Pull Request updates dependency webpack from ^3.10.0 to ^4.0.0

Release Notes

v4.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
  • 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()
  • 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
  • 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
    • allows to import JSON via ESM syntax
      • unused exports elimination for JSON modules
  • Optimization
    • Upgrade uglifyjs-webpack-plugin to v1
      • ES15 support

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 to javascript/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 are javascript/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()
      • This is an experimental feature and subject of change
  • 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 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 include test 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/foreach Chunks/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

v4.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

v4.1.0

Features

  • add filename option to optimization.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 in ProvidePlugin

v4.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 to output.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 of optimization.splitChunks

v4.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

Commits

v4.1.1

  • 6970103 Merge pull request #​6627 from Hoten/feat-uglifyjs-default-sourcemap
  • 23208a3 Show plural if assets are more than one
  • 01a5224 Merge pull request #​6664 from webpack/ci/test-timeout
  • 1b37115 Make AMD parser modules extensible
  • 2428b14 Fix linter error
  • ae2ae4e Merge pull request #​6640 from clarkdo/module-assets
  • c86cc80 Remove erronious this.parser assignments in apply methods
  • 57c6c43 Add requested changes from PR comments
  • 1181c0e Remove accidental filename setting which wasn't needed and was breaking test
  • 883088e fix(ProfilingPlugin): complete after the writeStream had finished flushing the data to the filesystem
  • f9e7a17 Escape module names
  • 9eb4daa Remove CCP link
  • 71eff5d Merge pull request #​6686 from webpack/bugfix/ccp-readme
  • 6879ab7 Merge pull request #​6685 from webpack/bugfix/node_chunks
  • 4f39932 Merge pull request #​6641 from tmilloff/master
  • c54df36 Merge pull request #​6609 from marcalexiei/configuration-version-error
  • 800e7f9 fix #​6688
  • edbb6f6 Merge pull request #​6670 from SimenB/patch-1
  • 8a59ef7 Merge pull request #​6689 from webpack/bugfix/issue-6688
  • 07c1f6d Prevent webpack from running twice at a time
  • 81a1cd8 Lint the tests
  • 60a5edc Wrap callback in compiler's run method
  • 44e02f4 Wrap callback in watcher's close method
  • e225d10 Fix compiler tests
  • 9f60f50 Prevent multi compiler from running twice at a time
  • 4d68350 fix bug where modules are put into the wrong chunk
  • 37f7681 Merge pull request #​6697 from webpack/bugfix/split-chunks
  • 41bb63a 4.1.1

v4.2.0

  • cdeffb3 fix(ProfilingPlugin): only expose the end method of fsStream
  • bd043f8 fix lint
  • 36db321 Added chunkFilenameDelimiter option for SplitChunksPlugin
  • b803c64 Added chunkFilenameDelimiter option for SplitChunksPlugin: Fixed parameter
  • ddb78d7 Added chunkFilenameDelimiter option for SplitChunksPlugin: Fixed Typo
  • 085d288 Added chunkFilenameDelimiter option for SplitChunksPlugin: Added tests and fixed code style
  • 7a19190 bot: Encapsulate output logs in details tag
  • 37b4ecf Only declare mocha globals inside dir
  • fbeb415 Prettify
  • 66ff412 Merge pull request #​6723 from alberto/eslint-env
  • bda8d52 Added chunkFilenameDelimiter option for SplitChunksPlugin: Applied requested changes
  • 771bf85 Added chunkFilenameDelimiter option for SplitChunksPlugin: Fixed test issue
  • 3ac042a bot: Add Summary and remaining errors to output
  • 7c0c1a0 Options: default performance to false if not the web/webworker target(#​6715)
  • 07571fe add tests
  • 6ddba9b Merge pull request #​6712 from ManuelBauer/master
  • 81e47b6 Fix typos
  • fcf634c reverting the HMR plugin runtime to use ES5
  • eff1f8f sticking to prettier's standards
  • 83df7cb bot: Fix Regex order
  • ea6e173 Move concurrent compilation error to separate class
  • ccc32d3 Remove unnecessary handler wrapper
  • 9f92969 Fix a test case which was broken due to typo fix
  • 2ecd323 Adjusting the default of performance; improve tests to cover different mode and target.
  • 19ebed9 Merge pull request #​6678 from niieani/profiling-race
  • 441b04b .editorconfig file simplified
  • 03e2673 Merge pull request #​6713 from montogeek/patch-1
  • 13b80be fix: make excludeModules accept booleans
  • 0f65643 fix: wrap bool with function to pass tests
  • 0732314 fix duplicate property names
  • 3dabc43 Merge pull request #​6738 from rhysd/fix-typos
  • 977bdb9 Merge pull request #​6750 from byzyk/fix/6726
  • 12b3751 Merge pull request #​6691 from acupofspirt/master
  • c65fb74 Merge pull request #​6736 from mc-zone/improvment/performance-falsy-at-non-web-target
  • a515918 wip: check if ! is present in path
  • a99b527 bot: Fix markdown format
  • 2194acf Merge pull request #​6756 from montogeek/fix/bot-logs-output-format
  • 4bbe7f8 Merge pull request #​6739 from deanshub/hmr-es5
  • 166a6b9 Merge pull request #​6744 from nurassyl/master
  • f513065 fix: throw validation error when exclamation mark was found in path
  • 57ea856 misc: Add schemas to ESLint and Prettier commands
  • fc7f344 Merge pull request #​6766 from montogeek/misc/add-schemas-eslint-prettier
  • fad52bf Ensure runtime code is written in ES5
  • 90552da Merge pull request #​6775 from webpack/lint_runtime
  • 2b40491 Code review changes
  • da3d412 Remove jsbeautifyrc file
  • b8b11bf Merge branch 'master' into fix/6742
  • b61540e fix prettier
  • 75c7804 Merge pull request #​6783 from alberto/remove-jsbeautifyrc
  • 4428efe Merge pull request #​6674 from chuckdumont/work
  • ae18a5a fix: default chunks to context when no context passed
  • f99f96d rename variable, use includes instead of indexOf
  • 422236f fix(bug) #​5964 convert MS into S for scripts timeout attr
  • a534dfd add test
  • c4678e3 fix(bug) #​5964 convert MS into S for scripts timeout attr: update expected bytes values
  • f82beb3 Merge pull request #​6789 from EugeneHlushko/issue/5964
  • d061aba fix ProfilingPlugin
  • cda226a handle reexporting json default export correctly
  • c6b9b9e Merge pull request #​6806 from webpack/bugfix/json-reexport
  • 3024078 Merge pull request #​6788 from byzyk/fix/6779
  • d628f90 Add end of statement semicolon
  • 0d3063e Merge pull request #​6810 from howdy39/add-end-of-statement-semicolon
  • 04d8188 Merge pull request #​6754 from byzyk/fix/6742
  • d668a23 4.2.0

This PR has been generated by Renovate Bot.

@renovate renovate bot changed the title Update dependency webpack to ^4.0.0 Update dependency webpack to ^4.0.0 - autoclosed Mar 26, 2018
@renovate renovate bot closed this Mar 26, 2018
@renovate renovate bot deleted the renovate/webpack-4.x branch March 26, 2018 22:12
@edmorley
Copy link
Member

edmorley commented Apr 4, 2018

Not sure why Renovate closed this PR (I filed renovatebot/renovate#1785).
A replacement PR is open at #768.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Development

Successfully merging this pull request may close these issues.

2 participants