美文网首页程序员
babel-plugin-react-css-modules与c

babel-plugin-react-css-modules与c

作者: GDUF_XRT | 来源:发表于2020-09-01 09:48 被阅读0次

问题描述

项目中同时使用 babel-plugin-react-css-modulescssLoader 对样式文件进行处理,前者讲 jsx 中的 styleName 转化为 className,后者将样式文件中类转化为固定格式的字符串。
两者共同使用 [path]___[name]__[local]___[hash:base64:5] 作为转化后的样式格式。
然而,在 mac 上正常应用的样式,在windows 上不能生效。

问题分析

查看源码,发现 cssLoader 转换格式的方法使用了 interpolateName(github地址)。babel-plugin-react-css-modules 使用了 genericNames,再查看 genericNames 的源码,发现其最终也是调用了 interpolateName 方法,(github地址),和 cssLoader 的区别在于,多了一层对 \ 的转换,(github地址)。

即两者的区别为,babel-plugin-react-css-modules 使用 generic-names 将 windows 路径中的 \ 转化为 / 之后再传给 interpolateName 处理。

解决方法

找到了原因,就有了解决方法。思路为,利用 cssLoader 中的 getLocalIdent 配置,传入自定义的转化方法,使其转化规则与 babel-plugin-react-css-modules 保持一致。

代码如下:

import genericNames from 'generic-names';
import path from 'path';

const GENERATE_PATH = '[path]___[name]__[local]___[hash:base64:5]';
function generateScopedName(localName, filePath) {
    const relativePath = path.relative(process.cwd(), filePath);
    return genericNames(GENERATE_PATH)(localName, relativePath);
}

// cssLoader 配置
getLocalIdent: function(context, _, localName) {
    return generateScopedName(localName, context.resoucePath);
}

相关文章

  • babel-plugin-react-css-modules与c

    问题描述 项目中同时使用 babel-plugin-react-css-modules 和 cssLoader 对...

  • C++

    C与C++的关系 1.C++可以与C代码进行混编(C++里能写C代码,C里不能写C++代码)2.C++面向对象编程...

  • C++语言基础(01)

    1.C与C++的关系 1.C++可以与C代码进行混编2.C++面向对象编程语言、C面向过程的编程3.C++对C的一...

  • rust与c,c++,go,java性能比较

    一,rust与c 二,rust与c++ 三,rust与go 四,rust与java

  • Android NDK开发之旅19--C++--基本概念、基本常

    前言——C与C++的关系 C++可以与C代码进行混编,C++里面可以写C,但是反过来不可以。 C++是面向对象编程...

  • (一)C++命名空间及引用

    C++命名空间及引用 一、C 与 C++ 的关系 C++ 可以与 C 代码进行混编 C++ 是一个面向对象编程语言...

  • c与c++

    C是一种通用的程式语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX作业系...

  • C与C++

    01概述 可以简单理解为C++是C的超集(当然,也有C的部分特性是C++不支持的),C语言较为底层,在嵌入式、操作...

  • A与C

    A姑娘与B先生在大学里是公认的情侣,郎才女貌。 一个是校花,一个是校草,见过他们的人没有不说他们是...

  • 03-禅与 Objective-C 编程艺术之Categorie

    01-禅与 Objective-C 编程艺术之条件语句与命名 02-禅与 Objective-C 编程艺术之类 C...

网友评论

    本文标题:babel-plugin-react-css-modules与c

    本文链接:https://www.haomeiwen.com/subject/labmsktx.html