Some tools of the Svelte ecosystem, such as svelte-vscode and svelte-kit, need access to your svelte configuration so they know how to properly handle your Svelte files. This can be achieved by creating a svelte.config.js
file at the root of your project which exports a svelte options object (similar to svelte-loader
and rollup-plugin-svelte
).
Example:
Write the config in ESM style when you have "type": "module"
in your package.json
. This is the case for Vite starters and SvelteKit projects.
// svelte.config.js
import { sveltePreprocess } from 'svelte-preprocess';
/**
* This will add autocompletion if you're working with SvelteKit
*
* @type {import('@sveltejs/kit').Config}
*/
const config = {
preprocess: preprocess({
// ...svelte-preprocess options
}),
// ...other svelte options
};
export default config;
Write the config in CommonJS style when you don't have "type": "module"
in your package.json
. This is the case for the Svelte starter template.
// svelte.config.js
const { sveltePreprocess } = require('svelte-preprocess');
module.exports = {
preprocess: sveltePreprocess({
// ...svelte-preprocess options
}),
// ...other svelte options
};
Tip: this file can be imported in your bundle config instead of having multiple svelte configurations lying around.
// rollup.config.js
import svelte from 'rollup-plugin-svelte';
import { sveltePreprocess } from 'svelte-preprocess'
import { scss, coffeescript, pug } from 'svelte-preprocess'
export default {
...,
plugins: [
svelte({
/**
* Auto preprocess supported languages with
* '<template>'/'external src files' support
**/
preprocess: sveltePreprocess({ /* options */ })
/**
* It is also possible to manually enqueue
* stand-alone processors
* */
preprocess: [
pug({ /* pug options */ }),
scss({ /* scss options */ }),
coffeescript({ /* coffeescript options */ })
]
})
]
}
...
module: {
rules: [
...
{
test: /\.(html|svelte)$/,
exclude: [],
use: {
loader: 'svelte-loader',
options: {
preprocess: require('svelte-preprocess')({
/* options */
})
},
},
},
...
]
}
...
Sapper has two build configurations, one for the client bundle and one for the server. To use svelte-preprocess
with Sapper, you need to define it on both configurations.
// ...
import { sveltePreprocess } from 'svelte-preprocess';
const preprocess = sveltePreprocess({
postcss: true,
// ...
});
export default {
client: {
plugins: [
svelte({
preprocess,
// ...
}),
},
server: {
plugins: [
svelte({
preprocess,
// ...
}),
],
},
};