Skip to content

Commit

Permalink
feat: provide default typing for supported file types
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jan 1, 2021
1 parent 0c0bc4a commit a9c7eac
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 17 deletions.
4 changes: 2 additions & 2 deletions packages/vite/package.json
Expand Up @@ -31,10 +31,10 @@
"prebuild": "rimraf dist && yarn lint",
"build": "run-s build-bundle build-types",
"build-bundle": "rollup -c",
"build-types": "run-s build-temp-types patch-types roll-types inject-import-meta",
"build-types": "run-s build-temp-types patch-types roll-types inject-types",
"build-temp-types": "tsc --emitDeclarationOnly --outDir temp/node -p src/node",
"patch-types": "node scripts/patchTypes",
"inject-import-meta": "node scripts/injectImportMeta",
"inject-types": "node scripts/injectTypes",
"roll-types": "api-extractor run && rimraf temp",
"lint": "eslint --ext .ts src/**",
"format": "prettier --write --parser typescript \"src/**/*.ts\"",
Expand Down
15 changes: 0 additions & 15 deletions packages/vite/scripts/injectImportMeta.js

This file was deleted.

25 changes: 25 additions & 0 deletions packages/vite/scripts/injectTypes.js
@@ -0,0 +1,25 @@
// @ts-check
const fs = require('fs')
const path = require('path')
const chalk = require('chalk')

fs.copyFileSync(
path.resolve(__dirname, '../types/importMeta.d.ts'),
path.resolve(__dirname, '../dist/node/importMeta.d.ts')
)

fs.copyFileSync(
path.resolve(__dirname, '../types/fileTypes.d.ts'),
path.resolve(__dirname, '../dist/node/fileTypes.d.ts')
)

// inject imports to ImportMeta augmentation and file type declarations into
// index.d.ts
const indexPath = path.resolve(__dirname, '../dist/node/index.d.ts')

const content = fs.readFileSync(indexPath, 'utf-8')
fs.writeFileSync(
indexPath,
content + `\nimport './importMeta'` + `\nimport './fileTypes'`
)
console.log(chalk.green.bold(`injected import.meta and file types`))
138 changes: 138 additions & 0 deletions packages/vite/types/fileTypes.d.ts
@@ -0,0 +1,138 @@
// CSS modules
type CSSModuleClasses = { readonly [key: string]: string }

declare module '*.module.css' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.scss' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.sass' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.less' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.styl' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.stylus' {
const classes: CSSModuleClasses
export default classes
}

// CSS
declare module '*.css' {
const css: string
export default css
}
declare module '*.scss' {
const css: string
export default css
}
declare module '*.sass' {
const css: string
export default css
}
declare module '*.less' {
const css: string
export default css
}
declare module '*.styl' {
const css: string
export default css
}
declare module '*.stylus' {
const css: string
export default css
}

// Built-in asset types
// see `src/constants.ts`

// images
declare module '*.jpg' {
const src: string
export default src
}
declare module '*.jpeg' {
const src: string
export default src
}
declare module '*.png' {
const src: string
export default src
}
declare module '*.gif' {
const src: string
export default src
}
declare module '*.svg' {
const src: string
export default src
}
declare module '*.ico' {
const src: string
export default src
}
declare module '*.webp' {
const src: string
export default src
}

// media
declare module '*.mp4' {
const src: string
export default src
}
declare module '*.webm' {
const src: string
export default src
}
declare module '*.ogg' {
const src: string
export default src
}
declare module '*.mp3' {
const src: string
export default src
}
declare module '*.wav' {
const src: string
export default src
}
declare module '*.flac' {
const src: string
export default src
}
declare module '*.aac' {
const src: string
export default src
}

// fonts
declare module '*.woff' {
const src: string
export default src
}
declare module '*.woff2' {
const src: string
export default src
}
declare module '*.eot' {
const src: string
export default src
}
declare module '*.ttf' {
const src: string
export default src
}
declare module '*.otf' {
const src: string
export default src
}

0 comments on commit a9c7eac

Please sign in to comment.