首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在css-modules中实现react-dates?

如何在css-modules中实现react-dates?
EN

Stack Overflow用户
提问于 2020-04-30 21:50:42
回答 1查看 107关注 0票数 0

所以react-dates运行得很好,直到我转到css-modules。我尝试从节点模块、index.js文件和html文件的头部导入css文件,但都不起作用。任何帮助或建议都将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-26 22:23:12

这很好地解决了这个问题

webpack.config.js中的

定义一个函数来检查您的文件,以确定它是css module还是全局;使用getLocalIdent选项完成。

这是我目前在设置中使用的方法。

这也要求要求你的文件有一些命名约定,name.module.css用于css模块,name.css用于常规文件。如下例所示:

代码语言:javascript
复制
// regex to test for modules, loaderUtils is part of webpack dependencies
const cssModuleRegex = new RegExp(/\.module\.(less|css)$/);
const loaderUtils = require("loader-utils");

// inside webpack rules
      {
        test: /\.(less|css)$/,
        use: [
          {
            loader: CssExtractPlugin.loader,
            options: { hot: is_dev, reloadAll: is_dev }
          },
          {
            loader: "css-loader",
            options: { 
                modules: { 
                    localIdentName: '[local]___[hash:base64:5]', 
                    getLocalIdent: getLocalIdent
                }
            }
          },
          "postcss-loader",
          "less-loader"
        ]
      }

// this is a copy of the default function, modified slightly to achieve our goal
function getLocalIdent(loaderContext, localIdentName, localName, options) {

    // return local name if it's a global css file
    if (!cssModuleRegex.test(loaderContext.resourcePath)) {
        return localName;
    }

    if (!options.context) {
      // eslint-disable-next-line no-param-reassign
      options.context = loaderContext.rootContext;
    }

    const request = path
      .relative(options.context, loaderContext.resourcePath)
      .replace(/\\/g, '/');

    // eslint-disable-next-line no-param-reassign
    options.content = `${options.hashPrefix + request}+${localName}`;

    // eslint-disable-next-line no-param-reassign
    localIdentName = localIdentName.replace(/\[local\]/gi, localName);

    const hash = loaderUtils.interpolateName(
      loaderContext,
      localIdentName,
      options
    );

    return hash
      .replace(new RegExp('[^a-zA-Z0-9\\-_\u00A0-\uFFFF]', 'g'), '-')
      .replace(/^((-?[0-9])|--)/, '_$1');
  }

来源:How to apply global styles with CSS modules in a react app?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61524958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档