#sass #svelte #svelte-3
#sass #svelte #svelte-3
Вопрос:
Я хотел бы использовать scss со svelte и svelte-image, но я получил сообщение об ошибке (без svelte-image все работает хорошо)
ошибка:
CompileError [ParseError]: Colon is expected
code: 'css-syntax-error',
start: { line: 26, column: 6, character: 394 },
end: { line: 26, column: 6, character: 394 },
pos: 394,
filename: undefined,
frame: '24: z-index: 99;n'
'25: n'
'26: img {n'
' ^n'
'27: width: 100%;n'
'28: height: auto;'
вот моя накопительная конфигурация
import svelte from "rollup-plugin-svelte";
...
import scss from "rollup-plugin-scss";
import sveltePreprocess from "svelte-preprocess";
import image from "svelte-image";
...
export default {
...
plugins: [
svelte({
preprocess: [
sveltePreprocess({
scss: {
includePaths: ["src"],
},
postcss: {
plugins: [require("autoprefixer")],
},
}),
image({
optimizeAll: true,
publicDir: "./public/",
quality: 80,
}),
],
compilerOptions: {
// enable run-time checks when not in production
dev: !production,
},
}),
scss({
output: "./public/build/bundle.css",
}),
...
],
};
Я думаю, что это происходит из порядка препроцессора (разметка, затем сценарий, затем стиль)
Должен ли я добавить стиль в отдельные scss?
Ответ №1:
Вы должны запускать препроцессоры последовательно, потому что svelte-image использует svelte.parse() внутренне, поэтому svelte-preprocess необходимо запускать раньше, если присутствует какой-либо scss.
Вы можете использовать https://www.npmjs.com/package/svelte-sequential-preprocessor и сделайте что-то вроде этого:
svelte({
preprocess: seqPreprocessor([ autoPreprocess(), image() ])
})
Комментарии:
1. Спасибо, я скоро это проверю 🙂