Search code examples
typescriptvue.jssass

Import scss variables into typescript in Vue


I'm trying to import SASS (scss) variables in to the javascript in typescript Vue 3 project:

// @/assets/styles/colors.scss
$white: #fff;
// @/assets/styles/_exports.scss
@import "./colors.scss";

:export {
  white: $white;
}
<template>
  <div>
  </div>
</template>
<script lang="ts">
import colors from "@/assets/styles/_export.scss";
</script>
// vue.config.js
module.exports = {
  css: {
    loaderOptions: {
      sass: {
        prependData: '@import "@/assets/styles/colors.scss";'
      }
    }
  }
};

But I'm getting Cannot find module '@/assets/styles/_export.scss' or its corresponding type declarations..

Any ideas pls?

Thanks


Solution

  • I created a declaration file named shims-scss.d.ts in src directory.

    // shims-scss.d.ts
    
    declare module '*.scss' {
      const content: {[className: string]: string};
      export default content;
    }
    

    It worked for me to import an object from a scss file like as _exports.scss you wrote.