mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-23 14:15:13 +00:00
Co-authored-by: SAWADA Takayoshi <sawadasuiren@gmail.com>
This commit is contained in:
parent
3b85dd97fc
commit
9a3fc8a44e
@ -1 +1,32 @@
|
|||||||
{}
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"esnext.asynciterable",
|
||||||
|
"dom"
|
||||||
|
],
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noEmit": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"~/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"@types/node",
|
||||||
|
"@nuxt/vue-app"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1 +1,32 @@
|
|||||||
{}
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"esnext.asynciterable",
|
||||||
|
"dom"
|
||||||
|
],
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noEmit": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"~/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"@types/node",
|
||||||
|
"@nuxt/vue-app"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,6 +1,34 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"esnext.asynciterable",
|
||||||
|
"dom"
|
||||||
|
],
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"allowJs": true,
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"noImplicitThis": true
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"~/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"@types/node",
|
||||||
|
"@nuxt/vue-app"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1,32 @@
|
|||||||
{}
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"esnext.asynciterable",
|
||||||
|
"dom"
|
||||||
|
],
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noEmit": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"~/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"@types/node",
|
||||||
|
"@nuxt/vue-app"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1 +1,32 @@
|
|||||||
{}
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "esnext",
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"esnext.asynciterable",
|
||||||
|
"dom"
|
||||||
|
],
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"noEmit": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"~/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@/*": [
|
||||||
|
"./*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
"@types/node",
|
||||||
|
"@nuxt/vue-app"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -101,6 +101,10 @@ export function showBanner(nuxt) {
|
|||||||
// Running mode
|
// Running mode
|
||||||
titleLines.push(`Running in ${nuxt.options.dev ? chalk.bold.blue('development') : chalk.bold.green('production')} mode (${chalk.bold(nuxt.options.mode)})`)
|
titleLines.push(`Running in ${nuxt.options.dev ? chalk.bold.blue('development') : chalk.bold.green('production')} mode (${chalk.bold(nuxt.options.mode)})`)
|
||||||
|
|
||||||
|
if (nuxt.options._typescript) {
|
||||||
|
titleLines.push(`TypeScript support is ${chalk.green.bold('enabled')}`)
|
||||||
|
}
|
||||||
|
|
||||||
// https://nodejs.org/api/process.html#process_process_memoryusage
|
// https://nodejs.org/api/process.html#process_process_memoryusage
|
||||||
const { heapUsed, rss } = process.memoryUsage()
|
const { heapUsed, rss } = process.memoryUsage()
|
||||||
titleLines.push(`Memory usage: ${chalk.bold(prettyBytes(heapUsed))} (RSS: ${prettyBytes(rss)})`)
|
titleLines.push(`Memory usage: ${chalk.bold(prettyBytes(heapUsed))} (RSS: ${prettyBytes(rss)})`)
|
||||||
|
@ -1,34 +1,16 @@
|
|||||||
import path from 'path'
|
import path from 'path'
|
||||||
import { existsSync } from 'fs'
|
|
||||||
import chalk from 'chalk'
|
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { warningBox } from './formatting'
|
|
||||||
|
|
||||||
const dependencyNotFoundMessage =
|
|
||||||
`Please install @nuxt/typescript and rerun the command
|
|
||||||
|
|
||||||
${chalk.bold('Using yarn')}
|
|
||||||
yarn add -D @nuxt/typescript
|
|
||||||
|
|
||||||
${chalk.bold('Using npm')}
|
|
||||||
npm install -D @nuxt/typescript`
|
|
||||||
|
|
||||||
export async function detectAndSetupTypeScriptSupport(rootDir, options = {}) {
|
export async function detectAndSetupTypeScriptSupport(rootDir, options = {}) {
|
||||||
const tsConfigPath = path.resolve(rootDir, 'tsconfig.json')
|
|
||||||
|
|
||||||
if (!existsSync(tsConfigPath)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
consola.info(`${chalk.bold.blue('tsconfig.json')} found, enabling TypeScript runtime support`)
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { setup } = require('@nuxt/typescript')
|
const { setup } = require('@nuxt/typescript')
|
||||||
await setup(tsConfigPath, options)
|
|
||||||
|
consola.info('Initializing typeScript support')
|
||||||
|
await setup(path.resolve(rootDir, 'tsconfig.json'), options)
|
||||||
|
consola.success('TypeScript support enabled')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e.code === 'MODULE_NOT_FOUND') {
|
if (e.code === 'MODULE_NOT_FOUND') {
|
||||||
process.stdout.write(warningBox(dependencyNotFoundMessage, chalk.yellow('An external official dependency is needed to enable TS support')))
|
return false
|
||||||
process.exit(1)
|
|
||||||
} else {
|
} else {
|
||||||
throw (e)
|
throw (e)
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
"@types/webpack-bundle-analyzer": "^2.13.1",
|
"@types/webpack-bundle-analyzer": "^2.13.1",
|
||||||
"@types/webpack-dev-middleware": "^2.0.2",
|
"@types/webpack-dev-middleware": "^2.0.2",
|
||||||
"@types/webpack-hot-middleware": "^2.16.5",
|
"@types/webpack-hot-middleware": "^2.16.5",
|
||||||
|
"consola": "^2.5.7",
|
||||||
"fork-ts-checker-webpack-plugin": "^1.0.0",
|
"fork-ts-checker-webpack-plugin": "^1.0.0",
|
||||||
"fs-extra": "^7.0.1",
|
"fs-extra": "^7.0.1",
|
||||||
"lodash": "^4.17.11",
|
|
||||||
"ts-loader": "^5.3.3",
|
"ts-loader": "^5.3.3",
|
||||||
"ts-node": "^8.0.3",
|
"ts-node": "^8.0.3",
|
||||||
"typescript": "^3.3.4000"
|
"typescript": "^3.3.4000"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { readJSON, writeJSON } from 'fs-extra'
|
import { existsSync, writeJSON } from 'fs-extra'
|
||||||
import { register } from 'ts-node'
|
import { register } from 'ts-node'
|
||||||
import defaultsDeep from 'lodash/defaultsDeep'
|
import consola from 'consola'
|
||||||
|
|
||||||
export const defaultTsJsonConfig = {
|
export const defaultTsJsonConfig = {
|
||||||
compilerOptions: {
|
compilerOptions: {
|
||||||
@ -43,8 +43,11 @@ export async function setup(tsConfigPath, options = {}) {
|
|||||||
}
|
}
|
||||||
_setup = true
|
_setup = true
|
||||||
|
|
||||||
const config = await readJSON(tsConfigPath)
|
// Only create a default `tsconfig.json` if it doesn't exist
|
||||||
await writeJSON(tsConfigPath, defaultsDeep(config, defaultTsJsonConfig), { spaces: 2 })
|
if (!existsSync(tsConfigPath)) {
|
||||||
|
consola.info(`Generating tsconfig.json (${tsConfigPath})`)
|
||||||
|
await writeJSON(tsConfigPath, defaultTsJsonConfig, { spaces: 2 })
|
||||||
|
}
|
||||||
|
|
||||||
// https://github.com/TypeStrong/ts-node
|
// https://github.com/TypeStrong/ts-node
|
||||||
register({
|
register({
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { resolve } from 'path'
|
import { resolve } from 'path'
|
||||||
import { mkdirp, readJSON, remove, writeJSON } from 'fs-extra'
|
import { mkdirp, readJSON, remove } from 'fs-extra'
|
||||||
import { register } from 'ts-node'
|
import { register } from 'ts-node'
|
||||||
import { defaultTsJsonConfig, setup as setupTypeScript } from '@nuxt/typescript'
|
import { defaultTsJsonConfig, setup as setupTypeScript } from '@nuxt/typescript'
|
||||||
|
|
||||||
@ -12,11 +12,10 @@ describe('typescript setup', () => {
|
|||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
// We're assuming that rootDir provided to setupTypeScript is existing so we create the tested one
|
// We're assuming that rootDir provided to setupTypeScript is existing so we create the tested one
|
||||||
await mkdirp(rootDir)
|
await mkdirp(rootDir)
|
||||||
await writeJSON(tsConfigPath, {})
|
|
||||||
await setupTypeScript(tsConfigPath)
|
await setupTypeScript(tsConfigPath)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('tsconfig.json has been updated with defaults', async () => {
|
test('tsconfig.json has been created with defaults', async () => {
|
||||||
expect(await readJSON(tsConfigPath)).toEqual(defaultTsJsonConfig)
|
expect(await readJSON(tsConfigPath)).toEqual(defaultTsJsonConfig)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
2
test/fixtures/basic/pages/jsx-link.js
vendored
2
test/fixtures/basic/pages/jsx-link.js
vendored
@ -1,4 +1,4 @@
|
|||||||
import renderLink from './jsx-link.jsx'
|
import renderLink from './jsx-link2.jsx'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
render: renderLink
|
render: renderLink
|
||||||
|
Loading…
Reference in New Issue
Block a user