re: My SCSS setup within a Vue CLI 3 project VIEW POST


Nice article :), however I was wondering if it could generate again and again all the styles called in global.scss each time a component has a <style scoped>. For exemple, the normalize.scss would be appended multiple time in the final file.

At least it seems to be the case when I replicate the exemple.

Here the compiled result:

/*! normalize.css v7.0.0 | MIT License html{line-height:1.15; [...]
/*! normalize.css v7.0.0 | MIT License html[data-v-abd815be]{line-height:1.15; [...]
/*! normalize.css v7.0.0 | MIT License html[data-v-jh6khva]{line-height:1.15; [...]

Or maybe this architecture should only be used with variables, mixins, functions ?


Hey Allan, great question!

My thinking around this was that inside the global.scss, it would only really import variables and mixins / placeholders - basically anything that the scoped components might need to reference or need access to.

You could probably also just list those files in the config, instead of creating a global.scss file - I just preferred it that way.

You bring up a good point, I think a good way of tackling this would be to have just variables and things that your components need to reference in the vue config file, and then any other 'global' styles such as basic html / body / normalize files could be imported into your layout / wrapper vue file.

What do you think?


Yes, I ended up with this solution so far :).

I created an import.scss for all my variables and mixins / placeholders used with the style-resources-loader plugin, and imported the global css part with a simple import in my main.js file.

I think it give the best of both worlds if you want to write style scoped and also use some general (unscoped) style like a reset, normalize, general UI, etc.

Great! Yeah that is always the case for me, I always have sort of base styles that apply globally, but I want to scope all my components. So doing it this way works perfectly :)

Hey Allan and Lynne, Sorry, kinda lost here :) Can you explain what you did to solve this? Especially with the import.scss file

Although, I think maybe importing the global.scss file in App.vue might also be a good solution?

Hi Emmanuel, the import.scss file should just have things like variables and mixins that the other files will need access to. If you don't use the plugin to serve the variables etc, you can't access them and use them within other components.

So basically, from your example. Everything imported in the global.scss file is available to use in all the components?

Awesome post Lynne. This helped me clean up way too many double imports.

Emmanuel, I was a little confused too.

For the stylesheet that you call into vue.config.js only import mixins and variables (no style selectors/rules).

Call other global.scss (declared rules and stuff) elsewhere, like main.js or a parent app like App.vue.

Any style rules imported to a stylesheet through vue.config.js will import again for each component that uses it.

code of conduct - report abuse