You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
minor #2944 Modernize and simplify our packages building tools, replace Rollup by tsup (Kocal)
This PR was squashed before being merged into the 2.x branch.
Discussion
----------
Modernize and simplify our packages building tools, replace Rollup by tsup
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | yes <!-- please update src/**/CHANGELOG.md files -->
| Docs? | yes <!-- required for new features -->
| Issues | Fix #... <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
Following #2935. Same goals, but less frictions than with tsdown, [tsup](https://github.com/egoist/tsup):
- `target` is correctly read from our `tsconfig.packages.json`
- no `//#region` comments
- less polyfills than oxc
- the `target` **stays** `es2021` without any issues with `static` and Stimulus
Two things:
1. About the `react-dom/client` import, yes it will impact AssetMapper users that don't use Flex, but it will positively impact other users (AssetMapper with Flex, Webpack Encore...) by removing useless code and making the file smaller
2. About the tons of `.d.ts` files removed, that's still fine, there is no point to generate `dist/<file>.d.ts` files when `dist/<file>.js` do not exist, they are not part of the public API.
The code review must be easier, since less code has been touched than with tsdown.
---
# Demo
When building LiveComponent assets:
```
➜ assets git:(tsup) pnpm build
> `@symfony`/[email protected] build /Users/kocal/workspace-os/symfony-ux/src/LiveComponent/assets
> tsx ../../../bin/build_package.ts .
CLI Building entry: src/live.css, src/live_controller.ts
CLI Using tsconfig: ../../../tsconfig.packages.json
CLI tsup v8.5.0
CLI Target: es2021
CLI Cleaning output folder
ESM Build start
[Symfony UX] Minified CSS file: /Users/kocal/workspace-os/symfony-ux/src/LiveComponent/assets/dist/live.css
[Symfony UX] Renamed dist/live.css to dist/live.min.css
ESM dist/live_controller.js 12.25 KB
ESM dist/live.css 74.00 B
ESM ⚡️ Build success in 26ms
DTS Build start
DTS ⚡️ Build success in 1276ms
DTS dist/live_controller.d.ts 7.96 KB
```
When watching LiveComponent assets, the CSS is easily watched too!
https://github.com/user-attachments/assets/a246f278-8bf4-40f6-887e-685be7509af0
Commits
-------
78fa229 Rebuild packages with tsup
897aaa8 Modernize and simplify our packages building tools, replace Rollup by tsup
`No input files found for package "${packageName}" (directory "${packageRoot}").\nEnsure you have at least a file matching the pattern "src/*_controller.ts", or manually specify input files in "${import.meta.filename}" file.`
84
-
);
85
-
process.exit(1);
86
-
}
87
59
88
-
constrollupConfig=getRollupConfiguration({
89
-
packageRoot,
90
-
inputFiles: inputScriptFiles,
91
-
isWatch,
92
-
additionalPlugins: [
93
-
...(isWatch&&inputStyleFile
94
-
? [
95
-
{
96
-
name: 'watcher',
97
-
buildStart(this: rollup.PluginContext){
98
-
this.addWatchFile(inputStyleFile);
99
-
},
100
-
},
101
-
]
102
-
: []),
103
-
],
60
+
// React, Vue, Svelte
61
+
if(file.includes('assets/src/loader.ts')){
62
+
external.add('./components.js');
63
+
}
104
64
});
105
65
106
-
if(isWatch){
107
-
console.log(
108
-
`Watching for JavaScript${inputStyleFile ? ' and CSS' : ''} files modifications in "${srcDir}" directory...`
0 commit comments