Skip to content

css modules "composes: <style> from <file>" does not work with .vue files #501

Open
@nemtsov

Description

@nemtsov

I'd like to use CSSModules via vue-loader to compose styles from another component.


❗️ The following currently fails with an error:

GrandChild.vue

<style module>
.message {
  padding: 10px;
  border: 2px dashed #ccc;
}
</style>

Parent.vue

<style module>
.message {
  composes: message from './GrandChild.vue';
  padding: 100px;
}
</style>

Error:

ERROR in ./~/css-loader!./src/components/GrandChild.vue
Module build failed: Unknown word (22:1)

  20 |   border: 2px dashed #ccc;
  21 | }
> 22 | </style>
     | ^
  23 |

✅ The code below works, but requires the CSS to be exacted from my component (which is undesirable for me):

GrandChild.css

.message {
  padding: 10px;
  border: 2px dashed #ccc;
}

Parent.vue

<style module>
.message {
  composes: message from './GrandChild.css';
  padding: 100px;
}
</style>

Simple project to reproduce the issue:

https://github.com/nemtsov/vue-style-experiments/blob/6309e9ee8211746900e80c392012b3069a8b131a/src/components/Parent.vue#L22

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