VueJS Rollup 导出多个 scss 资源

Posted

技术标签:

【中文标题】VueJS Rollup 导出多个 scss 资源【英文标题】:VueJS Rollup export multiple scss resources 【发布时间】:2020-12-19 15:33:51 【问题描述】:

是否可以使用 Rollup for Vue 导出多个 (s)css 资源? 我想要完成的是:

components.scss 从 src/components/**/*.vue 中提取 <style lang="scss">(包括 @import 文件)。 components.css 使用 tailwindcss 和 autoprefixer 解析 components.scss。 theme.scss 默认的通用主题样式(按钮等) theme.css 使用 tailwindcss 和 autoprefixer 解析了 theme.scss

到目前为止,我已经设法使用 rollup-plugin-bundle-scss 捆绑了 dist/components.scss,但我不确定如何添加其他文件。如果我在我的 index.js 条目文件中导入 theme.scss,它也会被添加到包中,这不是我想要的。我可以在 package.json 中公开 src/assets/theme.scss 但我仍然需要一个解析的版本

如果有办法在捆绑之前复制 components.scss,那也是一个不错的选择。

我的 rollup.config.js 的一部分

 plugins: [      
  bundleScss(output: 'components.scss', exclusive: false ),
  scss(),
  postcss(),
  resolve( extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'] ),
  vue(  css: true )
 ]

postcss.config.js

const autoprefixer = require('autoprefixer');
const tailwindcss = require('tailwindcss');

module.exports = 
  plugins: [
    tailwindcss,
    autoprefixer,
  ],
;

关于如何实现这一点的任何想法?

【问题讨论】:

【参考方案1】:

我想我只是自欺欺人了。发布此内容后,我注意到一个包含多个导出条目的示例配置,因此我添加了一个以 theme.scss 作为输入的配置条目。输出符合预期。

我不喜欢的一件事是构建过程会触发警告

发出的文件“theme.css”会覆盖之前发出的文件 同名。

意思是输出被写了两次,我不知道为什么会这样或者是否可以忽略它。

const cssOnlyConfig = 
  input: 'src/assets/theme.scss',
  output: 
    file: 'dist/theme.css',
    format: 'es',
    exports: 'default'
  ,
  plugins: [
    postcss(
      modules: false,
      extract: true
    ),
    vue(
      css:true,
    ),
  ],
;

【讨论】:

以上是关于VueJS Rollup 导出多个 scss 资源的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rollup 和 scss 动态注入每个组件的样式标签

尝试使用 rollup 和 vueJs 3 构建 vue 组件库

实战篇最详细的Rollup打包项目教程

“rollup-plugin-svelte”以下包没有导出它们的`package.json`

在 VueJS 模块中嵌套 SCSS 规则

如何在全局scss文件中实现绝对路径? VueJS