Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add css module feature #933

Closed
wants to merge 3 commits into from
Closed

add css module feature #933

wants to merge 3 commits into from

Conversation

MrKou47
Copy link
Contributor

@MrKou47 MrKou47 commented Oct 25, 2018

增加对 css-module 的支持

  1. 在 config template 中的 postcss 配置中增加 module 配置。用来判断是否启用 css module 功能。
{
  weapp: {
    module: {
      postcss: {
        module: { // new config
          generateScopedName: '[name]__[local]___[hash:base64:5]',
        },
        autoprefixer: {
          enable: true
        },
        url: {
          enable: true,
          limit: 10240
        }
      }
    }
  }
}

在 jsx 文件中,通过将 ImportDeclaration 转换为 VariableDeclaration 来实现。

import styles from './index.scss';
// ↓↓↓
const styles = {
  container : '__index__container__5UY8',
};
  1. 考虑到有全局样式的功能,如用户在 app.jsx 文件中直接使用 import './index.css',我考虑是更改 parseAst 最后产出的 styleFiles 还是从文件名来判断是否使用 css-module。如果修改 styleLists 则需要将 styleFiles: string[] 改为 stylesFiles: { fileName: string, module: boolean }[] 的形式,改动较大。因此我采用了文件名约束的方式,对引入的 style.global.css 这种含有 .global 的文件名的样式文件不做处理。

  2. 示例仓库 https://github.com/MrKou47/taro-css-modules

@luckyadam
Copy link
Member

吊炸天!!!

@helvenk
Copy link

helvenk commented Nov 2, 2018

我觉得还是就按照 create-react-app 的规范来更具有一致性,就是以 .module.css 结尾的就按 css modules 处理,其他的都是全局

@luckyadam
Copy link
Member

luckyadam commented Nov 5, 2018

@MrKou47 hello~ 这个 pr 能否提交到 taroize 分支,因为 css modules 功能规划在 1.2.0 版本~

@MrKou47
Copy link
Contributor Author

MrKou47 commented Nov 5, 2018

@MrKou47 hello~ 这个 pr 能否提交到 taroize 分支,因为 css modules 功能规划在 1.2.0 版本~

ok.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants