当前位置: 首页 > 知识库问答 >
问题:

CSS模块和汇总-生成具有相同哈希值的单独CSS文件(“主题”)

孟胤
2023-03-14

我在一个组件库项目中使用了CSS模块(SAS)和汇总,它运行良好。每个组件最后都有一个dist文件夹,其中包含一个JS包文件,以及一个相应的CSS文件,其中包含范围明确的CSS类,因此组件的使用者不必担心CSS类名冲突。他们所做的就是包含JS包和CSS文件,一切都很棒。是的CSS模块。

我现在面临的问题是,一些组件确实需要单独的“主题”——理想情况下,每个主题一个单独的CSS文件。因此,消费者可以继续他们一直在做的事情:包括JS捆绑包,但现在选择包含哪个CSS文件来选择主题。

我不知道如何在CSS模块中实现这一点

这将使组件的使用变得极其简单——只需包含一个不同的CSS文件即可。

有什么建议吗?

共有2个答案

国仰岳
2023-03-14

如果我没弄错,请考虑查看SCSS插件:rollup-plugin-scss。它捕获组件中导入的所有备用. css文件,然后通过底层node-sass处理它们。问题是,您似乎可以编写一个自定义回调函数,根据您输入的条件以不同的方式处理您的CSS。

基于插件页面中的示例:

import scss from 'rollup-plugin-scss'
...

export default {
  input: 'src/index.tsx',
  output: [...],
  plugins: [
    ...
    output: function (styles, styleNodes) {
      // replace this with conditioned outputs as needed:
      writeFileSync('bundle1.css', styles)
      writeFileSync('bundle2.css', styles)
    },
  ]
}
夏俊人
2023-03-14

太晚了,但让我在3年后回答这个问题。所以我最终做的是将CSS生成步骤与汇总完全分离,并依靠Sass CLI来处理构建过程的那一部分。这感觉有点笨拙,但我记得这并不难做到,并解决了我上面概述的问题。我不相信当时有简单的汇总解决方案,我也不认为今天有。

然而就我而言,整个方法有点错误。这当然不是每个人都会遇到的情况,但让我详细说明一下,因为它可能很有用,而且当时对我来说肯定不明显。

这是一个内部共享组件库,其中每个组件及其对应的CSS都是存储在我们的Artifactory中的一个单独的npm包。当它增长时,会弹出大量的内部引用,例如,多个组件会引用按钮组件,随着时间的推移,它们会引用按钮组件的不同版本——每个版本都需要自己的范围适当的CSS,这是该软件包版本所特有的。

所以我发现,通过这种方式——将CSS生成为npm包dist文件的一部分——我必须为消费者应用程序编写一个附加层,该层将为我们自己的内部组件解析它们的节点模块/文件夹,并将所有不同的CSS文件结合起来,例如按钮的多个版本。e、 g.主应用程序将直接导入按钮v1。0.0在其包中。json文件,但对话框组件(也包含在package.json中)可以包含按钮2.0.0作为其自身的依赖项。对于软件包的每个版本,都有一个范围独特的CSS版本——因此消费应用程序必须包含每个版本,否则样式就会被破坏。

所以总的来说,它比我想要的要复杂得多。我想我可以让它更简单

 类似资料:
  • 在网上找不到任何资源,但我正在尝试优化我们的内部组件库,我正在尝试使树摇床更友好。 我怎样才能离开罗洛普。输出中的css文件以及在文件中维护它们的导入。 即E 输出。 这似乎是尽可能直截了当的,iv'e发现了类似的线索,但没有回应。https://github.com/egoist/rollup-plugin-postcss/issues/204 允许这样做基本上意味着使用我的项目的人只会自动获得

  • 提取css 成单独文件需要用到mini-css-extract-plugin插件 一、提取 css 的核心配置 // webpack.config.js webpack的配置文件 // 路径: ./webpack.config.js ………… // 引入插件 const MiniCssExtractPlugin = require('mini-css-extract-plugin'); modu

  • 我会从我想达到的目标开始 意图 该软件在for循环中解析XML数据。处理数据的 for 循环将持续到 50(因为我得到了 50 个不同的结果)。我最初所做的是,-方法解析整个XML数据并将其保存到TextViews中并显示它。但现在我想添加一个启动画面,只要数据加载就会显示。 XML文件像任何其他普通XML文件一样构建,因此当我通过for循环时,键总是相同的,但值不同。 方法 我已经做的是创建一个

  • 我有两个哈希要合并。它们看起来像这样: 第二个散列看起来像: 我想合并这两个散列数组,结果如下所示: 有没有一种简单的方法来合并这两个哈希,或者我必须逐个遍历哈希并在另一个哈希中找到该键?

  • 问题内容: 我目前正在尝试使用Java安全API和BouncyCastle生成主题哈希。 当我使用Openssl库时,这是我的工作: 这将生成一个短的8位数字哈希 1817886a 这是我的Java代码 问题答案: 这将生成一个短的8位数字哈希1817886a OpenSSL有两种形式: 在Java中生成X509Certificate的主题哈希… 这是他们的来源: 最后: 使用RFC 2459 (

  • 问题内容: 如果我想找出两个键中是否没有一个键与另一个键不同,并且该键的值彼此匹配,如何最好地比较两个键。 将A与B进行比较时,由于B和D键的不同,它应该会失败。 如何最好地比较未排序的哈希图? 问题答案: 做一个支票上两者秒。 注意: 如果您包含键,那没有问题,但是如果您的Map包含类型键,则需要确保您的类实现了。