搭建 React + Typescript 环境,使用cssModule的正确姿势是怎样的?

发布于 2022-09-11 17:19:02 字数 899 浏览 9 评论 0

更新

目前是通过require来导入资源,测试不需要生成.d.ts文件,能够正常工作。后续再慢慢研究这块。

问题描述

我当前在官方creat-react-app的基础上加入了支持了scss的module,但是有个困惑的地方是每新建一个**.module.scss,当我在tsx中引用时就会新建一个**.module.scss.d.ts,文件夹内就会成这样:

clipboard.png

clipboard.png

没有这个文件将没法正常import

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

新加的loader:

{
        loader: require.resolve('typings-for-css-modules-loader'),
        options: {
          modules:true
        },
      },

代码跑起来是没问题的,也能正常使用cssModule

clipboard.png

但是文件结构多的那个d.ts很奇怪,是正常的吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半夏半凉 2022-09-18 17:19:03

https://www.tslang.cn/docs/ha...

我也觉得typescript的.d.ts神烦。但是没办法,但我们引入外部模块时就需要这个声明文件。不然没办法import

蓦然回首 2022-09-18 17:19:02

正常,并且无解。

戒ㄋ 2022-09-18 17:19:02

多大的事儿。。。

// File: ./typings/module.d.ts

declare module '*.scss' {
  const content: {[className: string]: string};
  export default content;
}

在你的根目录下建立一个 typings/module.d.ts就行了。

在webstorm下可以正常使用。在vscode下多装个extension: clinyong.vscode-css-modules

如果你需要用tsc编译项目,那么可能要把typings目录导入:

// File: tsconfig.json

{
    "compilerOptions": {
        "typeRoots": ["./node_modules/@types/", "./typings/"]
    }
}

还有一种是利用webpack去生成.d.ts

{
   test: /\.scss$/,
   exclude: /node_modules/,
   enforce: 'pre',
   use: [
       {
          loader: 'typed-css-modules-loader',
       },
       {
           loader: 'sass-loader',
       },
   ],
},

推荐使用第一种全局的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文