-
-
Notifications
You must be signed in to change notification settings - Fork 72
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
Discussion: Support typed css-modules with Typescript #1386
Comments
First of all, thanks a lot for your kind words about this project. That's what keeps me motivated to do stuff 🙂 Secondly, about typed css-modules: this sounds really great! I have tried several different options that didn't work. I would be happy to review and merge your PR in case you will find a solution. Let's start from a PR and go from there 👍 |
I have no ideas how to pass Vue SFC style tags content into template tag directly, my thoughts include writing SCSS rules for each component in ~/scss and importing them in components files, then overwriting $style property with imported rules |
Ok so I tried import Styles from '~/assets/scss/logo.module.scss';
export default class AppLogo extends Vue {
get style () {
return this.$style as typeof Styles;
}
} but still IntelliSense is not giving suggestions in template tag, I would need to define the type in module augmentation but it would be different for every compontent ;/ so I don't have any ideas for now.. |
That's exactly the same problem I had. |
Well I guess there is nothing we can do until there is no support from Vue/Nuxt |
Sounds complicated 😅 |
unfortunately no:( |
I'll close for now |
Let's keep it open. Because, this feature is so cool to have! |
how to support
|
Hi, I am working on typed Vue css-modules in Typescript support for Nuxt.js.
I saw the issue: nuxt/typescript#35, actually I found this template thanks to this (I am very grateful for this template by the way, this is what I needed but not deserved):]
Yesterday I have had some successes with a custom fork of a css-modules-typescript-loader package:
Readonly<Record<string, string>>
toany
style
computed getter like this:and it kinda worked.
But...
It doesn't make a sense, because types are available after building Webpack modules. Useless.
Considering that, I suggest trying new approach: extending Typescript configuration instead.
I found that typescript-plugin-css-modules seems to work remarkably good for me:
This plugin transforms Sass/SCSS to CSS using sass.renderSync method; I assume that .vue files support could be achieved with a customRenderer function extracting CSS from Vue single file components.
I am just not assured of how to assign exported classes to the $style property yet, though.
I believe this is a proper way of implementing typed Vue CSS modules, unlike extending webpack configuration. I would love to hear your opinion about this @sobolevn 😄
The text was updated successfully, but these errors were encountered: