sveltejs / rollup-plugin-svelte

Compile Svelte components with Rollup
MIT License
505 stars 79 forks source link

Svelte v5 with no `emitCss` specified throws error for missing `.css` file #216

Closed nolanlawson closed 8 months ago

nolanlawson commented 1 year ago

If you don't define emitCss in the config passed to rollup-plugin-svelte, and you're using svelte@5.0.0-next.1, and your component is missing a .css file, then an error is thrown:

[!] (plugin svelte) TypeError: Cannot read properties of null (reading 'code')
Hello.svelte
    at Object.transform (/workspace/rollup-demo/node_modules/rollup-plugin-svelte/index.js:154:32)
    at /workspace/rollup-demo/node_modules/rollup/dist/shared/rollup.js:1008:40

The error is thrown from this line:

https://github.com/sveltejs/rollup-plugin-svelte/blob/ed67842e80bcb07fd3ebcc1060ae2ef4f23e78e3/index.js#L154

This same error does not occur with Svelte v4.

Here is a minimal repro.

You can repro by doing:

git clone https://gist.github.com/nolanlawson/91dac64f8f50aa9d61bb23e23d077ddf repro
cd repro
npm install --legacy-peer-deps
npx rollup -c

Node and npm versions:

$ node --version
v20.9.0
$ npm --version
9.9.1

As a workaround, you can set emitCss: false in the config.

gka commented 9 months ago

I noticed that when setting emitCss: false in the config, the styles won't get injected at all, so I don't think the workaround is really working.