Import scss variables into typescript in Vue

Viewed 3154

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

1 Answers

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.

Related