-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
I just checked why tree shaking is not working correctly as mentioned by @markerikson in his tweet. I tested using the following small example project.
package.json
{
"name": "example",
"private": true,
"scripts": {
"build": "webpack"
},
"dependencies": {
"redux-starter-kit": ".."
},
"devDependencies": {
"webpack": "^4.28.4",
"webpack-cli": "^3.2.1"
},
"sideEffects": false
}
webpack.config.js
module.exports = {
mode: 'production'
}
src/index.js
import { createAction } from 'redux-starter-kit'
const foo = createAction('foo')
console.log(foo(123))
When building, all of redux-starter-kit ends up in the output. Looking more at the Webpack tree-shaking optimization, I eventually found the Debugging Optimization Bailouts section, which suggests running Webpack with --display-optimization-bailout
to find out when optimizations don't get applied. This is what I got:
> example@ build /Users/denis/Projects/redux-starter-kit/example
> webpack --display-optimization-bailout
Hash: 6728bcf74b0489ce1cf3
Version: webpack 4.28.4
Time: 390ms
Built at: 01/11/2019 10:56:01 PM
Asset Size Chunks Chunk Names
main.js 23.9 KiB 0 [emitted] main
Entrypoint main = main.js
[8] (webpack)/buildin/global.js 472 bytes {0} [built]
ModuleConcatenation bailout: Module is not an ECMAScript module
[9] (webpack)/buildin/harmony-module.js 573 bytes {0} [built]
ModuleConcatenation bailout: Module is not an ECMAScript module
[14] ./src/index.js + 2 modules 13.4 KiB {0} [built]
ModuleConcatenation bailout: Cannot concat with ../node_modules/immer/dist/immer.module.js (<- Module uses injected variables (process))
ModuleConcatenation bailout: Cannot concat with ../node_modules/redux-devtools-extension/index.js (<- Module is not an ECMAScript module)
ModuleConcatenation bailout: Cannot concat with ../node_modules/redux-immutable-state-invariant/dist/index.js (<- Module is not an ECMAScript module)
ModuleConcatenation bailout: Cannot concat with ../node_modules/redux/es/redux.js (<- Module is referenced from these modules with unsupported syntax: ../node_modules/redux-devtools-extension/index.js (referenced with cjs require))
| ./src/index.js 104 bytes [built]
| ModuleConcatenation bailout: Module is an entry point
| ../dist/redux-starter-kit.esm.js 12.8 KiB [built]
| + 1 hidden module
+ 25 hidden modules
As ModuleConcatenationPlugin is needed for tree-shaking, this suggests that some of the dependencies using require()
prevent tree-shaking from happening.
michens, tstelzer and mmathys
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working