fix(nuxi): write tsconfig when generating buildDir (#1161)

This commit is contained in:
Daniel Roe 2021-10-18 15:22:02 +01:00 committed by GitHub
parent 93454c1fa0
commit 6546fccbf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 47 additions and 12 deletions

View File

@ -27,6 +27,7 @@
"@nuxt/kit": "3.0.0", "@nuxt/kit": "3.0.0",
"@types/clear": "^0", "@types/clear": "^0",
"@types/mri": "^1.1.1", "@types/mri": "^1.1.1",
"@types/rimraf": "^3",
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"clear": "^0.1.0", "clear": "^0.1.0",
"clipboardy": "^3.0.0", "clipboardy": "^3.0.0",
@ -42,6 +43,7 @@
"p-debounce": "^4.0.0", "p-debounce": "^4.0.0",
"pathe": "^0.2.0", "pathe": "^0.2.0",
"pkg-types": "^0.2.1", "pkg-types": "^0.2.1",
"rimraf": "^3.0.2",
"scule": "^0.2.1", "scule": "^0.2.1",
"superb": "^4.0.0", "superb": "^4.0.0",
"tiged": "^2.12.0", "tiged": "^2.12.0",

View File

@ -3,6 +3,7 @@ import consola from 'consola'
import { writeTypes } from '../utils/prepare' import { writeTypes } from '../utils/prepare'
import { loadKit } from '../utils/kit' import { loadKit } from '../utils/kit'
import { clearDir } from '../utils/fs'
import { defineNuxtCommand } from './index' import { defineNuxtCommand } from './index'
export default defineNuxtCommand({ export default defineNuxtCommand({
@ -19,6 +20,8 @@ export default defineNuxtCommand({
const nuxt = await loadNuxt({ rootDir }) const nuxt = await loadNuxt({ rootDir })
await clearDir(nuxt.options.buildDir)
await writeTypes(nuxt) await writeTypes(nuxt)
nuxt.hook('error', (err) => { nuxt.hook('error', (err) => {

View File

@ -7,6 +7,7 @@ import { createServer, createLoadingHandler } from '../utils/server'
import { showBanner } from '../utils/banner' import { showBanner } from '../utils/banner'
import { writeTypes } from '../utils/prepare' import { writeTypes } from '../utils/prepare'
import { loadKit } from '../utils/kit' import { loadKit } from '../utils/kit'
import { clearDir } from '../utils/fs'
import { defineNuxtCommand } from './index' import { defineNuxtCommand } from './index'
export default defineNuxtCommand({ export default defineNuxtCommand({
@ -51,6 +52,7 @@ export default defineNuxtCommand({
await currentNuxt.close() await currentNuxt.close()
} }
const newNuxt = await loadNuxt({ rootDir, dev: true, ready: false }) const newNuxt = await loadNuxt({ rootDir, dev: true, ready: false })
await clearDir(newNuxt.options.buildDir)
prepare(newNuxt) prepare(newNuxt)
currentNuxt = newNuxt currentNuxt = newNuxt
await currentNuxt.ready() await currentNuxt.ready()

View File

@ -1,4 +1,6 @@
import { promises as fsp } from 'fs' import { promises as fsp } from 'fs'
import { promisify } from 'util'
import rimraf from 'rimraf'
// Check if a file exists // Check if a file exists
export async function exists (path: string) { export async function exists (path: string) {
@ -9,3 +11,8 @@ export async function exists (path: string) {
return false return false
} }
} }
export async function clearDir (path: string) {
await promisify(rimraf)(path)
await fsp.mkdir(path, { recursive: true })
}

View File

@ -76,9 +76,16 @@ export const writeTypes = async (nuxt: Nuxt) => {
consola.success('Generated', cyan(relative(process.cwd(), declarationPath))) consola.success('Generated', cyan(relative(process.cwd(), declarationPath)))
const tsConfigPath = resolve(nuxt.options.buildDir, 'tsconfig.json') async function writeFile () {
await fsp.mkdir(nuxt.options.buildDir, { recursive: true }) const tsConfigPath = resolve(nuxt.options.buildDir, 'tsconfig.json')
await fsp.writeFile(tsConfigPath, JSON.stringify(tsConfig, null, 2)) await fsp.writeFile(tsConfigPath, JSON.stringify(tsConfig, null, 2))
}
// This is needed for Nuxt 2 which clears the build directory again before building
// https://github.com/nuxt/nuxt.js/blob/dev/packages/builder/src/builder.js#L144
nuxt.hook('builder:prepared', writeFile)
await writeFile()
} }
function renderAttrs (obj: Record<string, string>) { function renderAttrs (obj: Record<string, string>) {

View File

@ -29,7 +29,6 @@
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"consola": "^2.15.3", "consola": "^2.15.3",
"defu": "^5.0.0", "defu": "^5.0.0",
"fs-extra": "^10.0.0",
"globby": "^11.0.4", "globby": "^11.0.4",
"hash-sum": "^2.0.0", "hash-sum": "^2.0.0",
"hookable": "^5.0.0", "hookable": "^5.0.0",
@ -45,7 +44,6 @@
"vue-router": "^4.0.12" "vue-router": "^4.0.12"
}, },
"devDependencies": { "devDependencies": {
"@types/fs-extra": "^9.0.13",
"@types/hash-sum": "^1.0.0", "@types/hash-sum": "^1.0.0",
"unbuild": "latest", "unbuild": "latest",
"vue-meta": "next" "vue-meta": "next"

View File

@ -1,12 +1,8 @@
import chokidar from 'chokidar' import chokidar from 'chokidar'
import { Nuxt } from '@nuxt/kit' import { Nuxt } from '@nuxt/kit'
import fse from 'fs-extra'
import { createApp, generateApp } from './app' import { createApp, generateApp } from './app'
export async function build (nuxt: Nuxt) { export async function build (nuxt: Nuxt) {
// Clear buildDir once
await fse.emptyDir(nuxt.options.buildDir)
const app = createApp(nuxt) const app = createApp(nuxt)
await generateApp(nuxt, app) await generateApp(nuxt, app)

View File

@ -3386,6 +3386,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/glob@npm:*":
version: 7.1.4
resolution: "@types/glob@npm:7.1.4"
dependencies:
"@types/minimatch": "*"
"@types/node": "*"
checksum: 6911a956448f5eddea1e4371f814bf92072e8ceedba83de6ce2a6745938a6f0327376e1c0072fa0d7b3b73d84e255aafda53c1dff148225cfe542a8cc5d54b02
languageName: node
linkType: hard
"@types/hash-sum@npm:^1.0.0": "@types/hash-sum@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "@types/hash-sum@npm:1.0.0" resolution: "@types/hash-sum@npm:1.0.0"
@ -3457,7 +3467,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/minimatch@npm:^3.0.3": "@types/minimatch@npm:*, @types/minimatch@npm:^3.0.3":
version: 3.0.5 version: 3.0.5
resolution: "@types/minimatch@npm:3.0.5" resolution: "@types/minimatch@npm:3.0.5"
checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92
@ -3566,6 +3576,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/rimraf@npm:^3":
version: 3.0.2
resolution: "@types/rimraf@npm:3.0.2"
dependencies:
"@types/glob": "*"
"@types/node": "*"
checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347
languageName: node
linkType: hard
"@types/semver@npm:^7": "@types/semver@npm:^7":
version: 7.3.8 version: 7.3.8
resolution: "@types/semver@npm:7.3.8" resolution: "@types/semver@npm:7.3.8"
@ -13685,6 +13705,7 @@ fsevents@~2.3.2:
"@nuxt/kit": 3.0.0 "@nuxt/kit": 3.0.0
"@types/clear": ^0 "@types/clear": ^0
"@types/mri": ^1.1.1 "@types/mri": ^1.1.1
"@types/rimraf": ^3
chokidar: ^3.5.2 chokidar: ^3.5.2
clear: ^0.1.0 clear: ^0.1.0
clipboardy: ^3.0.0 clipboardy: ^3.0.0
@ -13701,6 +13722,7 @@ fsevents@~2.3.2:
p-debounce: ^4.0.0 p-debounce: ^4.0.0
pathe: ^0.2.0 pathe: ^0.2.0
pkg-types: ^0.2.1 pkg-types: ^0.2.1
rimraf: ^3.0.2
scule: ^0.2.1 scule: ^0.2.1
superb: ^4.0.0 superb: ^4.0.0
tiged: ^2.12.0 tiged: ^2.12.0
@ -13781,7 +13803,6 @@ fsevents@~2.3.2:
"@nuxt/nitro": 3.0.0 "@nuxt/nitro": 3.0.0
"@nuxt/vite-builder": 3.0.0 "@nuxt/vite-builder": 3.0.0
"@nuxt/webpack-builder": 3.0.0 "@nuxt/webpack-builder": 3.0.0
"@types/fs-extra": ^9.0.13
"@types/hash-sum": ^1.0.0 "@types/hash-sum": ^1.0.0
"@vue/reactivity": 3.2.20 "@vue/reactivity": 3.2.20
"@vue/shared": 3.2.20 "@vue/shared": 3.2.20
@ -13789,7 +13810,6 @@ fsevents@~2.3.2:
chokidar: ^3.5.2 chokidar: ^3.5.2
consola: ^2.15.3 consola: ^2.15.3
defu: ^5.0.0 defu: ^5.0.0
fs-extra: ^10.0.0
globby: ^11.0.4 globby: ^11.0.4
hash-sum: ^2.0.0 hash-sum: ^2.0.0
hookable: ^5.0.0 hookable: ^5.0.0