Comments (5)
Setting moduleSideEffects: 'no-treeshake'
is always considered one hell of a side effect, so those would be properly ordered 😉
from rollup.
Yes, I am aware of this and it is indeed a duplicate. One problem is that fixing this would involve creating quite a few more chunks, and we already have a lot of chunks in complicated projects. So I wonder if this "strict execution order" should be an opt-in or an opt-out for users via an option. What would you think?
Another thought would be to track which modules have side effects and only ensure correct execution order between modules with side effects. Then maybe we could just enable it for everyone and hope that people do not have too many side effects in their modules.
from rollup.
In Vite, we transform each HTML into a module with <link rel=stylesheet href=/foo.css />
transformed to import './foo.css'
. We set moduleSideEffects: 'no-treeshake'
to CSS files and HTML files. Then, we inject the CSS tag rely on the generated chunk order. So in this specific case, opt-in for each module would work for Vite.
I guess in most cases, users would want to apply it only to some modules like modules injecting polyfills.
from rollup.
For polyfills, there is usually not a problem if you ensure that all static entries first import the polyfill. See also https://rollupjs.org/faqs/#how-do-i-add-polyfills-to-a-rollup-bundle . But it would still be nice to fix this properly.
from rollup.
Ah, that's true.
If rollup goes with the latter way (= track which modules have side effects), Vite would need to inject a dummy statement that has side effects and remove that later in renderChunk
. So it'd be nice if there's a way to opt-in per module even with the latter way.
Maybe starting with an new option that opt-in the behavior is good. Then, I guess we can know how much the number of chunks will increase. Also we can try if experimentalMinChunkSize
can eliminate the increase.
from rollup.
Related Issues (20)
- 4.16.4 throws Cannot find module @rollup/rollup-darwin-arm64 error MODULE_NOT_FOUND in Ember Embroider app HOT 4
- Node 16 not supported any longer, can't run more modern Node's either HOT 5
- Provide a mechanism to build manualChunks which can be reused across multiple outputs.
- Upgrade from vite 4 to vite 5 crashes in rollup with maximum call stack exceeded HOT 2
- function parameter tracking does not handle spread syntax in arguments correctly HOT 3
- top level return for IIFEs HOT 2
- Function body being mistakenly optimized away HOT 3
- After Babel starts runtime and rolls up preserveModules=true, it will result in an extra layer of output structure HOT 5
- I have a query about the rollup build process with export classes as opposed to export functions HOT 3
- Unknown Fatal Error if code is not an int
- Error: 'default' is not exported by node_modules/interactjs/dist/interact.min.js,
- Don't create dynamic import objects when never used
- Provide original name of exports in output bundle
- Node.JS 22.2.0 rollup 4.18.0 hits `[!] SyntaxError: Unexpected identifier 'assert'` error HOT 1
- React component wont render
- How to configure the .scss file under the style folder to generate a .css file in dist/style/ after building?
- Does not support BSD, not sure why, but it should be easy to port. HOT 2
- Declaring `sideEffects` causes Rollup to drop code with side effects HOT 2
- How to named export from CommonJS module with rollup?
- Packaging vue components, it seems that typescript code is not recognized
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rollup.