-
-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: unbundled esm #8613
chore: unbundled esm #8613
Changes from 4 commits
ec3ebaa
391795f
c1492dd
bec6ee1
c1b5aca
e1b67bd
474a4b2
c8f98b5
dbf29eb
e1f6676
2c738b0
55bb947
2473946
f35e998
35ea95b
6aa3e46
eaef8f1
4dbee70
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,75 +6,67 @@ | |
"module": "index.mjs", | ||
"main": "index", | ||
"files": [ | ||
"src", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we should separate the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If copying over the changes, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for catching that. I updated #8523 to address that |
||
"types", | ||
"compiler.*", | ||
"register.js", | ||
"index.*", | ||
"ssr.*", | ||
"internal", | ||
"store", | ||
"animate", | ||
"transition", | ||
"easing", | ||
"motion", | ||
"action", | ||
"elements", | ||
"index.d.ts", | ||
"internal.d.ts", | ||
"store.d.ts", | ||
"animate.d.ts", | ||
"transition.d.ts", | ||
"easing.d.ts", | ||
"motion.d.ts", | ||
"action.d.ts", | ||
"elements.d.ts", | ||
Comment on lines
+13
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are these needed in addition to the exports map because of the moduleResolution thing? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Correct |
||
"README.md" | ||
], | ||
"exports": { | ||
"./package.json": "./package.json", | ||
".": { | ||
"types": "./types/runtime/index.d.ts", | ||
"browser": { | ||
"import": "./index.mjs", | ||
"require": "./index.js" | ||
"import": "./src/runtime/index.js" | ||
}, | ||
"import": "./ssr.mjs", | ||
"require": "./ssr.js" | ||
"import": "./src/runtime/ssr.js" | ||
}, | ||
"./compiler": { | ||
"types": "./types/compiler/index.d.ts", | ||
"import": "./compiler.mjs", | ||
"require": "./compiler.js" | ||
"import": "./src/compiler/index.js", | ||
"require": "./compiler.cjs" | ||
}, | ||
"./action": { | ||
"types": "./types/runtime/action/index.d.ts" | ||
}, | ||
"./animate": { | ||
"types": "./types/runtime/animate/index.d.ts", | ||
"import": "./animate/index.mjs", | ||
"require": "./animate/index.js" | ||
"import": "./src/runtime/animate/index.js" | ||
}, | ||
"./easing": { | ||
"types": "./types/runtime/easing/index.d.ts", | ||
"import": "./easing/index.mjs", | ||
"require": "./easing/index.js" | ||
"import": "./src/runtime/easing/index.js" | ||
}, | ||
"./internal": { | ||
"types": "./types/runtime/internal/index.d.ts", | ||
"import": "./internal/index.mjs", | ||
"require": "./internal/index.js" | ||
"import": "./src/runtime/internal/index.js" | ||
}, | ||
"./motion": { | ||
"types": "./types/runtime/motion/index.d.ts", | ||
"import": "./motion/index.mjs", | ||
"require": "./motion/index.js" | ||
"import": "./src/runtime/motion/index.js" | ||
}, | ||
"./register": { | ||
"require": "./register.js" | ||
}, | ||
"./store": { | ||
"types": "./types/runtime/store/index.d.ts", | ||
"import": "./store/index.mjs", | ||
"require": "./store/index.js" | ||
"import": "./src/runtime/store/index.js" | ||
}, | ||
"./transition": { | ||
"types": "./types/runtime/transition/index.d.ts", | ||
"import": "./transition/index.mjs", | ||
"require": "./transition/index.js" | ||
"import": "./src/runtime/transition/index.js" | ||
}, | ||
"./elements": { | ||
"types": "./elements/index.d.ts" | ||
"types": "./elements.d.ts" | ||
} | ||
}, | ||
"engines": { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
import fs from 'node:fs'; | ||
import { createRequire } from 'node:module'; | ||
import replace from '@rollup/plugin-replace'; | ||
import resolve from '@rollup/plugin-node-resolve'; | ||
import commonjs from '@rollup/plugin-commonjs'; | ||
import json from '@rollup/plugin-json'; | ||
|
||
const require = createRequire(import.meta.url); | ||
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf-8')); | ||
|
||
// Create auto-generated .js files | ||
fs.writeFileSync( | ||
'./src/shared/version.js', | ||
`/** @type {string} */\nexport const VERSION = '${pkg.version}';` | ||
); | ||
|
||
const internal = await import('./src/runtime/internal/index.js'); | ||
fs.writeFileSync( | ||
'src/compiler/compile/internal_exports.js', | ||
`// This file is automatically generated\n` + | ||
`export default new Set(${JSON.stringify(Object.keys(internal))});` | ||
); | ||
|
||
// Generate d.ts files for runtime entrypoints so that TS can find it also without `"moduleResolution": "bundler"` | ||
fs.readdirSync('src/runtime', { withFileTypes: true }) | ||
.filter((dirent) => dirent.isDirectory()) | ||
.forEach((dirent) => | ||
fs.writeFileSync( | ||
`${dirent.name}.d.ts`, | ||
`export * from './types/runtime/${dirent.name}/index.js';` | ||
) | ||
); | ||
|
||
fs.writeFileSync('./index.d.ts', `export * from './types/runtime/index.js';`); | ||
|
||
fs.writeFileSync( | ||
'./compiler.d.ts', | ||
`export { compile, parse, preprocess, walk, VERSION } from './types/compiler/index.js';` | ||
); | ||
|
||
/** | ||
* @type {import("rollup").RollupOptions[]} | ||
*/ | ||
export default [ | ||
// Generate UMD build of the compiler so that Eslint/Pretter (which need CJS) and REPL (which needs UMD because browser) can use it | ||
dummdidumm marked this conversation as resolved.
Show resolved
Hide resolved
|
||
{ | ||
input: 'src/compiler/index.js', | ||
plugins: [ | ||
replace({ | ||
preventAssignment: true, | ||
values: { | ||
'process.env.NODE_DEBUG': false // appears inside the util package | ||
} | ||
}), | ||
{ | ||
resolveId(id) { | ||
// util is a built-in module in Node.js, but we want a self-contained compiler bundle | ||
// that also works in the browser, so we load its polyfill instead | ||
if (id === 'util') { | ||
return require.resolve('./node_modules/util'); // just 'utils' would resolve this to the built-in module | ||
} | ||
// Must import from the `css-tree` browser bundled distribution due to `createRequire` usage if importing from css-tree directly | ||
if (id === 'css-tree') { | ||
return require.resolve('./node_modules/css-tree/dist/csstree.esm.js'); | ||
} | ||
} | ||
}, | ||
resolve(), | ||
commonjs({ | ||
include: ['node_modules/**'] | ||
}), | ||
json() | ||
], | ||
output: { | ||
file: 'compiler.cjs', | ||
format: 'umd', | ||
name: 'svelte', | ||
sourcemap: false | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shouldn't we still have sourcemaps for this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We decided to remove it because rarely any tool depends on it, and those who do can still backtrack manually |
||
}, | ||
external: [] | ||
} | ||
]; |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we add a comment explaining why this needs to be ignored
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
!
means it's not ignored, which it was previously 😄There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, duh. the format of this file is rather peculiar where it ignores everything in the root directory by default and then only opts files in. I wonder if we could swap that once the CJS version is removed