mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-12-25 03:33:36 +03:00
refactor(api): generate types next to modules (#8391)
* refactor(api): generate types next to modules" this fixes an issue with `moduleResolution: node` * change file * Update api-moduleresolution-node.md
This commit is contained in:
parent
db12777742
commit
ef21b681e2
5
.changes/api-moduleresolution-node.md
Normal file
5
.changes/api-moduleresolution-node.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
"@tauri-apps/api": "patch:bug"
|
||||
---
|
||||
|
||||
Fix a regression where typescript could not find types when using `"moduleResolution": "node"`
|
@ -19,10 +19,17 @@
|
||||
},
|
||||
"homepage": "https://github.com/tauri-apps/tauri#readme",
|
||||
"type": "module",
|
||||
"types": "./types/index.d.ts",
|
||||
"main": "./index.cjs",
|
||||
"module": "./index.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./index.js",
|
||||
"require": "./index.cjs"
|
||||
},
|
||||
"./*": {
|
||||
"import": "./*.js",
|
||||
"require": "./*.cjs"
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"scripts": {
|
||||
|
@ -7,14 +7,7 @@ import typescript from '@rollup/plugin-typescript'
|
||||
import terser from '@rollup/plugin-terser'
|
||||
import fg from 'fast-glob'
|
||||
import { basename, join } from 'path'
|
||||
import {
|
||||
writeFileSync,
|
||||
copyFileSync,
|
||||
opendirSync,
|
||||
rmSync,
|
||||
Dir,
|
||||
readFileSync
|
||||
} from 'fs'
|
||||
import { copyFileSync, opendirSync, rmSync, Dir } from 'fs'
|
||||
import { fileURLToPath } from 'url'
|
||||
|
||||
// cleanup dist dir
|
||||
@ -57,7 +50,7 @@ export default defineConfig([
|
||||
plugins: [
|
||||
typescript({
|
||||
declaration: true,
|
||||
declarationDir: './dist/types',
|
||||
declarationDir: './dist',
|
||||
rootDir: 'src'
|
||||
}),
|
||||
makeFlatPackageInDist()
|
||||
@ -87,44 +80,10 @@ function makeFlatPackageInDist(): Plugin {
|
||||
return {
|
||||
name: 'makeFlatPackageInDist',
|
||||
writeBundle() {
|
||||
// append our api modules to `exports` in `package.json` then write it to `./dist`
|
||||
const pkg = JSON.parse(readFileSync('package.json', 'utf8'))
|
||||
const mods = modules.map((p) => basename(p).split('.')[0])
|
||||
|
||||
const outputPkg = {
|
||||
...pkg,
|
||||
devDependencies: {},
|
||||
exports: Object.assign(
|
||||
{},
|
||||
...mods.map((mod) => {
|
||||
let temp: Record<
|
||||
string,
|
||||
{ types: string; import: string; require: string }
|
||||
> = {}
|
||||
let key = `./${mod}`
|
||||
if (mod === 'index') {
|
||||
key = '.'
|
||||
}
|
||||
|
||||
temp[key] = {
|
||||
types: `./types/${mod}.d.ts`,
|
||||
import: `./${mod}.js`,
|
||||
require: `./${mod}.cjs`
|
||||
}
|
||||
return temp
|
||||
}),
|
||||
// if for some reason in the future we manually add something in the `exports` field
|
||||
// this will ensure it doesn't get overwritten by the logic above
|
||||
{ ...(pkg.exports || {}) }
|
||||
)
|
||||
}
|
||||
writeFileSync(
|
||||
'dist/package.json',
|
||||
JSON.stringify(outputPkg, undefined, 2)
|
||||
)
|
||||
|
||||
// copy necessary files like `CHANGELOG.md` , `README.md` and Licenses to `./dist`
|
||||
fg.sync('(LICENSE*|*.md)').forEach((f) => copyFileSync(f, `dist/${f}`))
|
||||
fg.sync('(LICENSE*|*.md|package.json)').forEach((f) =>
|
||||
copyFileSync(f, `dist/${f}`)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user