plugins/sass-vars.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { promises as fs } from 'fs'
import url from 'url'
import getSassVars from 'get-sass-vars'

import { MdPluginTypes, ReturnValue } from './MdPluginTypes'

export default function (): MdPluginTypes {
  return {
    enforce: 'post',
    name: 'vite-plugin-sass-vars',
    async transform(_: string, id: string): Promise<ReturnValue> {
      const parsedId = url.parse(id, true)
      const isSassVars = 'sass-vars' in parsedId.query

      if (!isSassVars || !parsedId.pathname) {
        return {}
      }
      const raw = await fs.readFile(parsedId.pathname, 'utf-8')
      const vars = await getSassVars(raw)
      const json = JSON.stringify(vars, null, 2)
      const code = `export default ${json}`
      return { code }
    }
  }
}