sveltejs/rollup-plugin-svelte

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

nolanlawson opened this issue · 1 comments

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:

if (emitCss && compiled.css.code) {

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

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.