javascript - 缩小/破坏 JSX 中的 CSS 类名和 Webpack 的 CSS 输出(或其他编程方式)

标签 javascript css reactjs webpack postcss

我想在我的输出 CSS 文件和从我的 React 组件渲染的 JSX 中缩小我的类名(用于最小的源保护目的),类似于这个 Webpack 插件:https://github.com/vreshch/optimize-css-classnames-plugin

有没有我可以使用的任何现有选项,Webpack 或其他方式?非常感谢。

来自:

<div className="long-class-name"></div>

.long-class-name {
 }

收件人:

<div class="a"></div>
.a {
}

最佳答案

由于您已经在使用 Webpack,我认为一个不错的选择是使用 CSS Modules来完成那个。您可以使用 css-loaderpostcss-modules例如,这样做。

基本上,通过使用 CSS 模块,您可以 import您的 CSS 并将其视为 JSON。所以,如果你写 .long-class-name { }你会有这样的东西{ 'long-class-name': '<<interpolated name>>' } .这里的技巧是 <<interpolated name>>在我的示例中,您可以通过编程方式进行设置。

Webpack 有一些您可以使用的预定义标记,您可以在此处看到:https://github.com/webpack/loader-utils#interpolatename .您可以在此处查看示例:

{
  test: /\.css$/,
  use: [
    {
      loader: 'css-loader',
      options: {
        modules: true,
        localIdentName: '[path][name]__[local]--[hash:base64:5]'
      }
    }
  ]
}

但是,如果您想要更“自定义”的东西,您可以指定 getLocalIdent功能:

{
  test: /\.css$/,
  use: [
    {
      loader: 'css-loader',
      options: {
        modules: true,
        localIdentName: '[path][name]__[local]--[hash:base64:5]',
        getLocalIdent: (context, localIdentName, localName, options) => {
          return 'whatever_random_class_name';
        }
      }
    }
  ]
}

请引用docs阅读有关 CSS Modules 选项的更多信息.

这样做,您可以按照需要的方式指定您的类名并解决您的问题。

希望对您有所帮助!

关于javascript - 缩小/破坏 JSX 中的 CSS 类名和 Webpack 的 CSS 输出(或其他编程方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794232/

相关文章:

javascript - 查看 json 并单击该 json 中的 links.json 并将其替换为当前的 json View

PHP - 检查页面是否在移动或桌面浏览器上运行

css - 第三个 opac 背景不起作用(CSS3 中具有不透明度的多个背景)

javascript - 如何使用 componentDidMount() 发出多个 axios.get() 请求并将第一个响应值分配给第二个?

javascript - 如何将 Bootstrap 样式应用到 Angular ui Datepicker

javascript - 带有 204 响应和回调函数的信标跟踪图像

javascript - 粘性导航栏功能失调

reactjs - 如果资源未解析(SPA、react-router),Spring Boot 2.1.0 仅提供 index.html

reactjs - React useEffect 在页面刷新后不会调度 redux 操作

javascript - 无法在我的 HTML/JS 页面上获取背景图片