我正在寻找有关如何将 Materializecss 或 Bulma 的 sass 版本集成到 Svelte 中的说明。我的目标是能够将单个组件(如按钮组件或卡片组件)导入单个苗条组件。此外,我希望能够利用 Bulma 提供的 sass 变量。
我已经寻找了一些关于如何做到这一点的教程,但我还没有找到任何东西。
有任何想法吗?
我正在寻找有关如何将 Materializecss 或 Bulma 的 sass 版本集成到 Svelte 中的说明。我的目标是能够将单个组件(如按钮组件或卡片组件)导入单个苗条组件。此外,我希望能够利用 Bulma 提供的 sass 变量。
我已经寻找了一些关于如何做到这一点的教程,但我还没有找到任何东西。
有任何想法吗?
你不清楚你在哪个部分苦苦挣扎,但我会告诉你我如何将 Bulma 与 Svelte(和 Sapper)一起使用:
首先,安装bulma dev依赖:
npm i -D bulma
然后,安装 svelte-preprocess:
npm i -D svelte-preprocess
然后,将 svelte-preprocess 添加到汇总配置中:
transformers: {
scss: {
includePaths: [
'node_modules',
'src'
]
}
}
}
然后,确保将preprocess
选项传递给svelte
汇总插件。如果您使用 Sapper,请为服务器和客户端执行此操作。
svelte({
dev,
hydratable: true,
emitCss: true,
preprocess: sveltePreprocess(scssOptions)
}),
添加一个包含 bulma 依赖项的 scss 入口点文件:
// scss-entrypoint.scss
@charset 'utf-8';
@import 'node_modules/bulma/sass/utilities/_all.sass';
@import 'node_modules/bulma/sass/base/_all.sass';
@import 'node_modules/bulma/sass/grid/columns.sass';
...
然后,在 Sapper 的根级组件 (App.svelte) 或 (_layout.svelte) 中包含 sass 文件:
<svelte:head>
<style src="path/to/your/scss-entrypoint.scss"></style>
</svelte:head>
就是这样。我在这里写了一篇关于这个的演讲。请参阅此幻灯片和接下来的 5 张幻灯片:
https://antony.github.io/svelte-meetup-talk-oct-2019/#27
这里有一个工作演示:
我的方法有点不同。在这里,我正在导入整个 Bulma,但您可以轻松地仅导入您真正需要的那些组件。然后,我PurgeCSS
用来在构建过程中清理未使用的 CSS。
<style lang="scss" global>
@import "bulma/bulma";
</style>
import sveltePreprocess from 'svelte-preprocess';
import postcss from 'rollup-plugin-postcss';
import autoprefixer from 'autoprefixer';
import purgecss from '@fullhuman/postcss-purgecss';
...
svelte({
preprocess: sveltePreprocess({
sourceMap: !production,
}),
dev: !production,
emitCss: true
}),
postcss({
plugins: [
purgecss({
content: [
'./src/**/*.svelte',
'./node_modules/svelte/*.js',
],
}),
autoprefixer()
],
extract: true,
minimize: production,
sourceMap: !production,
}),
...
有几件事可能会很有趣:
global
,因为没有它,我会在预处理阶段收到很多“未使用的 CSS”警告purgecss
也需要链接svelte/*.js
,以保持苗条基础中使用的样式postcss
可能是 的一部分sveltePreprocess
,但这给了我更糟糕的结果,所以我正在使用postcss
带有缩小的独立preprocess
与 justscss
和globalStyle
预处理器一起使用(https://github.com/sveltejs/svelte-preprocess/blob/master/docs/preprocessing.md#stand-alone-processors),但这给了我相同的结果sveltePreprocess
(时间和文件大小相同)我在默认的 Svelte 模板之上做了一个最小的提交,它让 Bulma 在这个示例 repo 中启动并运行:
https://github.com/samal-rasmussen/svelte-bulma/commit/8afb28f6f157de89d6ace8310a31ab6d2b5e1776
如果你觉得它有帮助,我已经开发了一个模板,可以在 Svelte 中使用 MaterializeCSS。此外,我还添加了 SMUI(Svelte Material UI),它添加了 scss 功能以使用 SASS 处理项目样式。
运行以下命令:
npx svelte-add@latest bulma