最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - Bundling Sass modules in React Component Package with Rollup - Stack Overflow

programmeradmin5浏览0评论

I'm working on packaging up a React component. I'm used to using CSS modules with sass (EG like Next.js).

-src
--components
---HelloWorld
----index.js
----hello-world.module.scss

HelloWorld

import React from 'react'
import styles from './hello-world.module.scss'

const HelloWorld = () => {
  return(
    <div className={styles.hello}>Hello World</div>
  )
}

export default HelloWorld

hello-world.module.scss

.hello {
  font-size: 2rem;
}

rollup.config.js

import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import terser from '@rollup/plugin-terser';
import sass from 'rollup-plugin-sass';
import pkg from './package.json' assert { type: 'json' };


export default {
  input: 'src/index.jsx',
  output: [
    { file: pkg.main, format: 'cjs' },
    { file: pkg.module, format: 'esm' },
  ],
  plugins: [
    babel({
      babelHelpers: 'bundled',
      exclude: 'node_modules/**',
      presets: ['@babel/preset-env', '@babel/preset-react']
    }),
    sass(),
    resolve(),
    commonjs(),
    terser(),
  ],
  external: Object.keys(pkg.peerDependencies),
};

Given the above code, it successfully 'rolls up' but the output of styles.css is

.hello {
  font-size: 2rem;
}

My desired output would be something like:

.HelloWorld-hello {
  font-size: 2rem;
}

to prevent any collisions. I just don't even seem to know the right terms to google.

发布评论

评论列表(0)

  1. 暂无评论