Open alza54 opened 5 years ago
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 but maybe a custom TypeScript language service plugin could solve this issue?
maybe a custom TypeScript language service plugin
Sounds complicated š Do you have any experience in this kind of stuff?
unfortunately no:( but this is how https://github.com/mrmckeb/typescript-plugin-css-modules works
I'll close for now
Let's keep it open. Because, this feature is so cool to have!
how to support module
attr in style tag
<style module lang="scss">
.default-header {
position: relative;
height: 65px;
border-bottom: 1px solid $gray-400;
}
</style>
Hi, I am working on typed Vue css-modules in Typescript support for Nuxt.js. I saw the issue: https://github.com/nuxt/typescript/issues/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 š