n6g7 / react-starter

A starter kit for react
1 stars 0 forks source link

Update webpack to the latest version 🚀 #7

Closed greenkeeper[bot] closed 6 years ago

greenkeeper[bot] commented 6 years ago

☝️ Greenkeeper’s updated Terms of Service will come into effect on April 6th, 2018.

Version 4.0.0 of webpack was just published.

Dependency webpack
Current Version 3.11.0
Type devDependency

The version 4.0.0 is not covered by your current version range.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

It might be worth looking into these changes and trying to get this project onto the latest version of webpack.

If you have a solid test suite and good coverage, a passing build is a strong indicator that you can take advantage of these changes directly by merging the proposed change into your project. If the build fails or you don’t have such unconditional trust in your tests, this branch is a great starting point for you to work on the update.


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
Commits

The new version differs by 838 commits.

  • 213226e 4.0.0
  • fde0183 Merge pull request #6081 from webpack/formating/prettier
  • b6396e7 update stats
  • f32bd41 fix linting
  • 5238159 run prettier on existing code
  • 518d1e0 replace js-beautify with prettier
  • 4c25bfb 4.0.0-beta.3
  • dd93716 Merge pull request #6296 from shellscape/fix/hmr-before-node-stuff
  • 7a07901 Merge pull request #6563 from webpack/performance/assign-depth
  • c7eb895 Merge pull request #6452 from webpack/update_acorn
  • 9179980 Merge pull request #6551 from nveenjain/fix/templatemd
  • e52f323 optimize performance of assignDepth
  • 6bf5df5 Fixed template.md
  • 90ab23a Merge branch 'master' into fix/hmr-before-node-stuff
  • b0949cb add integration test for spread operator

There are 250 commits in total.

See the full diff

FAQ and help There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).

Your Greenkeeper bot :palm_tree:

greenkeeper[bot] commented 6 years ago

Version 4.0.1 just got published.

Update to this version instead 🚀

Release Notes 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
Commits

The new version differs by 8 commits.

  • 5044762 4.0.1
  • 7fd5c6f Merge pull request #6585 from webpack/bugfix/bailout-messages
  • 8e592bf Merge pull request #6575 from nveenjain/addVersion
  • e7aba18 fix incorrect optimization bailout messages
  • 9f9c3d1 Merge pull request #6583 from webpack/bugfix/import-cjs
  • 8bf1574 CJS fake namespace object contains exports now
  • d50fa68 add newlines
  • 05174ae Added version to webpack's export property

See the full diff

greenkeeper[bot] commented 6 years ago

Version 4.1.0 just got published.

Update to this version instead 🚀

Release Notes 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
Commits

The new version differs by 73 commits.

  • f916fc0 4.1.0
  • 8eba694 Merge pull request #6650 from webpack/bump_watchpack
  • 00f70fc Merge pull request #6645 from zacanger/fix/6644
  • 2e3d319 Merge pull request #6648 from cheapsteak/patch-1
  • 01c18cc Merge pull request #6651 from webpack/feature/split-chunks-filename
  • 2e687d0 Merge pull request #6613 from brentwilton/improve-performance-of-module-concatenation-plugin
  • 3c5b104 Merge pull request #6663 from webpack/feature/support-non-js
  • 2c8ea60 expose stuff and all non-bundle modules
  • b0e14df Set optimization.splitChunks to false in test webpack config.
  • ecb65aa allow to configure filename for splitted chunks
  • 325038d Update watchpack to 1.5.0
  • a2fd80e Update downloads badge to point to graph of downloads
  • 3a41ca4 Fix #6644
  • 39095ef add todo for ModuleConcatenationPlugin for loop bugfix
  • f6e366b Merge pull request #6611 from kvrlk/patch-1

There are 73 commits in total.

See the full diff

greenkeeper[bot] commented 6 years ago

Version 4.1.1 just got published.

Update to this version instead 🚀

Release Notes 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
Commits

The new version differs by 27 commits.

  • 41bb63a 4.1.1
  • 37f7681 Merge pull request #6697 from webpack/bugfix/split-chunks
  • 4d68350 fix bug where modules are put into the wrong chunk
  • 8a59ef7 Merge pull request #6689 from webpack/bugfix/issue-6688
  • edbb6f6 Merge pull request #6670 from SimenB/patch-1
  • 800e7f9 fix #6688
  • c54df36 Merge pull request #6609 from marcalexiei/configuration-version-error
  • 4f39932 Merge pull request #6641 from tmilloff/master
  • 6879ab7 Merge pull request #6685 from webpack/bugfix/node_chunks
  • 71eff5d Merge pull request #6686 from webpack/bugfix/ccp-readme
  • 9eb4daa Remove CCP link
  • f9e7a17 Escape module names
  • 1181c0e Remove accidental filename setting which wasn't needed and was breaking test
  • 57c6c43 Add requested changes from PR comments
  • ae2ae4e Merge pull request #6640 from clarkdo/module-assets

There are 27 commits in total.

See the full diff

greenkeeper[bot] commented 6 years ago

Version 4.2.0 just got published.

Update to this version instead 🚀

Release Notes 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

The new version differs by 74 commits.

  • d668a23 4.2.0
  • 04d8188 Merge pull request #6754 from byzyk/fix/6742
  • 0d3063e Merge pull request #6810 from howdy39/add-end-of-statement-semicolon
  • d628f90 Add end of statement semicolon
  • 3024078 Merge pull request #6788 from byzyk/fix/6779
  • c6b9b9e Merge pull request #6806 from webpack/bugfix/json-reexport
  • cda226a handle reexporting json default export correctly
  • d061aba fix ProfilingPlugin
  • f82beb3 Merge pull request #6789 from EugeneHlushko/issue/5964
  • c4678e3 fix(bug) #5964 convert MS into S for scripts timeout attr: update expected bytes values
  • a534dfd add test
  • 422236f fix(bug) #5964 convert MS into S for scripts timeout attr
  • f99f96d rename variable, use includes instead of indexOf
  • ae18a5a fix: default chunks to context when no context passed
  • 4428efe Merge pull request #6674 from chuckdumont/work

There are 74 commits in total.

See the full diff

greenkeeper[bot] commented 6 years ago

Version 4.3.0 just got published.

Update to this version instead 🚀

Release Notes v4.3.0

Features

  • add support for [contenthash] placeholder

Bugfixes

  • browser field is used for target electron-renderer
  • set devtoolNamespace default correctly when passing an object to output.library
Commits

The new version differs by 24 commits.

  • 54ceb3c 4.3.0
  • d762a2b Merge pull request #6875 from mohsen1/patch-2
  • 3691224 Merge pull request #6872 from boneskull/patch-1
  • df2b3c2 Prettier
  • 165a2ed Remove extraneous argument from setOptions call sites in OptionsDefaulter
  • a31bf26 fix capitalization of project name in README.md
  • fc2feaf Merge pull request #6844 from swederik/issue-6843
  • eba38f1 Merge pull request #6861 from Legends/master
  • 41a0482 Merge pull request #6839 from webpack/feature/contenthash
  • b018bc7 more tests and fixes for webworker
  • 4861d2c Merge pull request #6832 from webpack/reflect
  • 68a11fd Extract setup infos from Contributing.md into separate setup.md for visiblity reasons
  • 06e9a57 get rid of webpackJsonp global leak
  • d7a0fc3 fix bug without async chunks, add more tests
  • c328c65 use destructing for more readable code

There are 24 commits in total.

See the full diff

greenkeeper[bot] commented 6 years ago

Version 4.4.0 just got published.

Update to this version instead 🚀

Release Notes v4.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
Commits

The new version differs by 72 commits.

  • e3bb8c9 4.4.0
  • 2bd495c Merge pull request #6864 from webpack/bump_prettier
  • 8d8da4c Merge branch 'master' into bump_prettier
  • 0f70fcb Merge pull request #6791 from storybooks/spilt-chunks-selector
  • 3f6b78f Merge pull request #6467 from PlayMa256/prompt_install_cli
  • b30de38 Merge pull request #6672 from EugeneHlushko/fix/6639
  • f600ccd Merge pull request #6827 from Connormiha/optimize-sort-by-identifier
  • 1b50e4e Merge pull request #6833 from webpack/ellipsis
  • 3a6edf0 Merge pull request #6882 from mohsen1/patch-4
  • d4f3c77 Merge pull request #6883 from mohsen1/remove-dead-code
  • 1e7cc39 Merge pull request #6889 from Janpot/issue-6867
  • 4b6ee73 Merge pull request #6894 from webpack/bugfix/css-stuff
  • e15df70 Merge pull request #6897 from mohsen1/init-time
  • cc77f7e Merge pull request #6898 from mohsen1/patch-6
  • ca79190 Merge pull request #6899 from mohsen1/patch-7

There are 72 commits in total.

See the full diff