Skip to content

Composing class from another scss css modules results in invalid stylesheet in production #7596

@joshhunt

Description

@joshhunt

Describe the bug

SCSS + CSS Modules problem.

During production build only, Composing from one SCSS + CSS Modules stylesheet into another results in invalid CSS in the final main.hash.chunk.css stylesheet. This problem does not occur when doing a development build.

In the final css file, there are basically two copies of the composed stylesheet, one of which has not been processed by Sass, the the other of which has missing properties (only properties that had sass variables?) . This results in invalid syntax in the file, and invalid styles.

Did you try recovering your dependencies?

Yes.

Which terms did you search for in User Guide?

I've searched to see if there's any caveats with using Sass and CSS Modules together. It did not appear there are any.

Environment

Environment Info:

  System:
    OS: macOS 10.14.5
    CPU: x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
  Binaries:
    Node: 10.15.3 - /usr/local/opt/node@10/bin/node
    Yarn: 1.16.0 - /usr/local/bin/yarn
    npm: 6.4.1 - /usr/local/opt/node@10/bin/npm
  Browsers:
    Chrome: 76.0.3809.100
    Firefox: 67.0
    Safari: 12.1.1
  npmPackages:
    react: ^16.9.0 => 16.9.0
    react-dom: ^16.9.0 => 16.9.0
    react-scripts: 3.1.1 => 3.1.1
  npmGlobalPackages:
    create-react-app: Not Found

Steps to reproduce

  1. Have App.module.scss, as a stylesheet using Sass features (such as variables for background colour)
  2. Have other.module.scss, as a stylesheet, with a class name that composes something from App.module.scss
  3. Import both App.module.scss and other.module.scss
  4. yarn build

Expected behavior

Styles are fine. It should look like this https://deploy-preview-9--destiny-data-explorer.netlify.com, and the compiled stylesheet should something like this https://gist.github.com/joshhunt/d2efc72f133e448b0c67a93bb1bde36d#file-correctbutnocomposes-css

Actual behavior

Styles are not fine, it looks like this https://deploy-preview-8--destiny-data-explorer.netlify.com and the compiled stylesheet looks something like this https://gist.github.com/joshhunt/d2efc72f133e448b0c67a93bb1bde36d#file-wrong-css

As seen in the linked file, the Sass variables have not been compiled away.

Screenshot 2019-08-26 at 18 59 47

Reproducible demo

I have created a minimal reproduction branch here https://github.com/joshhunt/destinyDataExplorer/tree/cra-repro/bug which has been deployed https://deploy-preview-8--destiny-data-explorer.netlify.com

If I comment out the composes: the issue does away, which you can see deployed here https://deploy-preview-9--destiny-data-explorer.netlify.com

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions