0.4.4 • Published 4 months ago

@vrx-volar/tsc v0.4.4

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

@vrx-volar/tsc

该包处于实验阶段,不建议直接使用在生产环境

为解决 使用 vue-tsc 内部 API 生成 .d.ts 文件时,

由于vue-tsc内部 API 变更过于频繁,

无法基于 semver 规范宽松匹配 vue-tsc 版本的问题。

基于 vue-tsc >=2.0.19 封装

如果部分 volar 插件无法正确的加载,可能是 该 volar 插件未适配 vue/language-tools 2.x.x 的更新

安装

npm i @vrx-volar/tsc
yarn add @vrx-volar/tsc
pnpm add @vrx-volar/tsc
bun add @vrx-volar/tsc

proxyCreateProgram

ts.Program 处理拥有能处理 vue 文件的能力

为了使 vue-tsc#run 方法可以单独用来创建 ts.Program

import { proxyCreateProgram } from '@vrx-volar/tsc'
import * as vue from '@vue/language-core'
import ts from 'typescript'

const host = ts.createCompilerHost({})

const createProgram = proxyCreateProgram({})

const program = createProgram({
  rootNames,
  options: {
    target: ts.ScriptTarget.ESNext,
    moduleResolution: ts.ModuleResolutionKind.Bundler,
    noImplicitAny: false,
    allowJs: true,
    declaration: true,
    emitDeclarationOnly: true,
    strict: true,
    isolatedModules: true,
    esModuleInterop: true,
    skipLibCheck: true,
    jsx: ts.JsxEmit.Preserve,
  },
  host,
  configFileParsingDiagnostics,
})

createProgram

创建 可解析 vue 文件的 ts.Program

import { createProgram } from '@vrx-volar/tsc'
import { globby } from 'globby'

const rootNames = await globby(
  ['**/*.vue', '**/*.?({m,c}){ts,js}?(x)'],
  { 
    absolute: true,
    onlyFiles: true,
  },
)
const program = await createProgram(rootNames)

typeCheck

检查 ts.Program 内项目文件语法合理性

import { createProgram } from '@vrx-volar/tsc'

const program = await createProgram(rootNames)

typeCheck(program)

triggerProgramResult

获取ts.Program 处理后的项目文件

import { writeFile } from 'node:fs/promises'
import { createProgram } from '@vrx-volar/tsc'

const program = await createProgram(rootNames)

const { files } = triggerProgramResult(program)

await Promise.all(
  files.map((item) => {
    return writeFile(item.file, item.content)
  })
)
0.4.4

4 months ago

0.4.3

4 months ago

0.4.2

4 months ago

0.4.1

5 months ago

0.4.0

5 months ago

0.3.4

6 months ago

0.3.3

6 months ago

0.3.2

7 months ago

0.3.1

8 months ago

0.3.0

9 months ago

0.2.7

10 months ago

0.2.6

10 months ago

0.2.8

10 months ago

0.2.3

10 months ago

0.2.5

10 months ago

0.2.2

12 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago