DEV Community

Discussion on: My SCSS setup within a Vue CLI 3 project

Collapse
 
lynnewritescode profile image
Lynne Finnigan

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?

Collapse
 
lateek35 profile image
Allan Raquin

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.

Thread Thread
 
lynnewritescode profile image
Lynne Finnigan

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 :)

Thread Thread
 
peoray profile image
Emmanuel Raymond • Edited

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?

Thread Thread
 
lynnewritescode profile image
Lynne Finnigan

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.

Thread Thread
 
peoray profile image
Emmanuel Raymond

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

Thread Thread
 
seanrparker profile image
Sean

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.