我在 rollup(v2.62.0) 中使用 rollup-plugin-scs( v3.0.0 ) 插件来打包我的 svelte(v3.44.3) 应用程序。
有两组 scss 文件。一组用于从左到右的语言,另一组用于从右到左的语言。对于每一组,都有一个入口 scss 文件,用于导入其他相关的 scss 文件。
我所期待的是将 scss 文件打包成两个单独的包。
- src/styles/global_ltr.scss => global_ltr.css
- src/styles/global_rtl.scss => global_rtl.css
然后我的 svelte 组件可以根据访问者的语言懒加载相应的 css 文件。
<svelte:head>
<link rel="stylesheet" href="/styles/global_ltr.css" /> // or global_rlt.css if Hebrew
</svelte:head>
rollup.config.js
如下所示
import scss from 'rollup-plugin-scss'
import sveltePreprocess from 'svelte-preprocess';
// ...
{
input: [ /*...*/ ],
output: {
sourcemap: true,
format: 'amd',
name: 'app',
dir: destDir
},
plugins: [
scss({
include: [ './src/styles/global_ltr.scss', './src/styles/global_rtl.scss'],
output: function (styles, styleNodes) {
console.log(styleNodes);
fs.writeFileSync(destDir + 'global_ltr.css', styles)
},
failOnError: true,
}),
svelte({
preprocess: sveltePreprocess(),
emitCss: false, // <style> in components are not included in bundles
}),
// ...
]
}
我遇到什么问题:
两套捆绑成一套。
scss({output: function})
回调仅在 ltr 和 rtl 样式中触发一次。我必须在我的应用程序中导入两个条目 scss 文件,否则它们不会被捆绑。
import 'styles/global_ltr.scss';
import 'styles/global_rtl.scss';
一般来说,我试图将两组 scss 文件捆绑到两个单独的 css 文件中,而不考虑苗条。
先感谢您