Skip to content

Commit bd215fa

Browse files
author
pooya parsa
committed
initial commit
0 parents  commit bd215fa

30 files changed

+9978
-0
lines changed

.circleci/config.yml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
version: 2
2+
jobs:
3+
build:
4+
docker:
5+
- image: circleci/node
6+
steps:
7+
# Checkout repository
8+
- checkout
9+
10+
# Restore cache
11+
- restore_cache:
12+
key: yarn-cache-{{ checksum "yarn.lock" }}
13+
14+
# Install dependencies
15+
- run:
16+
name: Install Dependencies
17+
command: NODE_ENV=dev yarn
18+
19+
# Keep cache
20+
- save_cache:
21+
key: yarn-cache-{{ checksum "yarn.lock" }}
22+
paths:
23+
- "node_modules"
24+
25+
# Lint
26+
- run:
27+
name: Lint
28+
command: yarn lint
29+
30+
# Tests
31+
# - run:
32+
# name: Tests
33+
# command: yarn jest
34+
35+
# Coverage
36+
- run:
37+
name: Coverage
38+
command: yarn codecov

.editorconfig

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# editorconfig.org
2+
root = true
3+
4+
[*]
5+
indent_size = 2
6+
indent_style = space
7+
end_of_line = lf
8+
charset = utf-8
9+
trim_trailing_whitespace = true
10+
insert_final_newline = true
11+
12+
[*.md]
13+
trim_trailing_whitespace = false

.eslintignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules
2+
dist
3+
.nuxt
4+
coverage

.eslintrc.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = {
2+
root: true,
3+
parserOptions: {
4+
parser: 'babel-eslint',
5+
sourceType: 'module'
6+
},
7+
extends: [
8+
'@nuxtjs'
9+
]
10+
}

.gitignore

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
node_modules
2+
*.iml
3+
.idea
4+
*.log
5+
.nuxt
6+
.vscode
7+
.DS_Store
8+
coverage
9+
dist

README.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Nuxt Typescript
2+
3+
4+
5+
## 📑 License
6+
7+
[MIT License](./LICENSE)
8+
9+
Copyright (c) Nuxt.js Team

jest.config.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
module.exports = {
2+
testEnvironment: 'node',
3+
4+
expand: true,
5+
6+
forceExit: true,
7+
8+
setupFilesAfterEnv: ['./test/utils/setup'],
9+
10+
coverageDirectory: './coverage',
11+
12+
collectCoverageFrom: [
13+
'**/packages/*/src/**/*.js'
14+
],
15+
16+
transformIgnorePatterns: [
17+
'node_modules/(?!(@nuxt|nuxt))'
18+
],
19+
20+
transform: {
21+
'^.+\\.ts$': 'ts-jest',
22+
'^.+\\.js$': 'babel-jest',
23+
'^.+\\.vue$': 'vue-jest'
24+
},
25+
26+
moduleFileExtensions: [
27+
'ts',
28+
'js',
29+
'json'
30+
]
31+
}
32+
#!/usr/bin/env node

lerna.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"version": "independent",
3+
"npmClient": "yarn",
4+
"useWorkspaces": true,
5+
"conventionalCommits": true,
6+
"exact": true,
7+
"packages": [
8+
"packages/*"
9+
],
10+
"command": {
11+
"publish": {
12+
"npmClient": "npm"
13+
},
14+
"init": {
15+
"exact": true
16+
}
17+
}
18+
}

package.json

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"private": true,
3+
"workspaces": [
4+
"packages/*"
5+
],
6+
"scripts": {
7+
"nuxt-ts": "node ./packages/nuxt-ts/bin/nuxt-ts.js",
8+
"lint": "eslint packages",
9+
"test": "yarn lint"
10+
},
11+
"devDependencies": {
12+
"@babel/core": "latest",
13+
"@babel/preset-env": "latest",
14+
"@nuxtjs/eslint-config": "latest",
15+
"babel-eslint": "latest",
16+
"babel-jest": "latest",
17+
"codecov": "latest",
18+
"core-js": "2",
19+
"eslint": "latest",
20+
"eslint-config-standard": "latest",
21+
"eslint-plugin-import": "latest",
22+
"eslint-plugin-jest": "latest",
23+
"eslint-plugin-node": "latest",
24+
"eslint-plugin-promise": "latest",
25+
"eslint-plugin-standard": "latest",
26+
"eslint-plugin-vue": "latest",
27+
"jest": "^24.8.0",
28+
"nuxt-edge": "^2.7.0-25953129.a88e8b60"
29+
}
30+
}

packages/nuxt-ts/bin/nuxt-ts.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env node
2+
3+
const path = require('path')
4+
const { getNuxtBin, getRootdirFromArgv, registerTSNode, setupTSConfig } = require('..')
5+
6+
async function main() {
7+
const rootDir = getRootdirFromArgv()
8+
const tsConfigPath = path.resolve(rootDir, 'tsconfig.json')
9+
10+
await setupTSConfig(tsConfigPath)
11+
12+
registerTSNode(tsConfigPath)
13+
14+
require(getNuxtBin())
15+
}
16+
17+
main().catch((error) => {
18+
require('consola').error(error)
19+
process.exit(1)
20+
})

packages/nuxt-ts/lib/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
...require('./utils'),
3+
registerTSNode: require('./register'),
4+
setupTSConfig: require('./setup')
5+
}

packages/nuxt-ts/lib/register.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const { register } = require('ts-node')
2+
3+
function registerTSNode(tsconfigPath) {
4+
// https://github.com/TypeStrong/ts-node
5+
register({
6+
project: tsconfigPath,
7+
compilerOptions: {
8+
module: 'commonjs'
9+
}
10+
})
11+
}
12+
13+
module.exports = registerTSNode

packages/nuxt-ts/lib/setup.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const { exists, readFile, writeJSON } = require('fs-extra')
2+
const consola = require('consola')
3+
const defaultTsJsonConfig = require('./tsconfig')
4+
5+
async function setupTSConfig(tsConfigPath) {
6+
let contents = ''
7+
8+
if (await exists(tsConfigPath)) {
9+
contents = await readFile(tsConfigPath, 'utf-8')
10+
}
11+
12+
if (!contents || contents === '{}') {
13+
consola.info(`Generating ${tsConfigPath.replace(process.cwd(), '')}`)
14+
await writeJSON(tsConfigPath, defaultTsJsonConfig, { spaces: 2 })
15+
}
16+
}
17+
18+
module.exports = setupTSConfig

packages/nuxt-ts/lib/tsconfig.js

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
module.exports = {
2+
compilerOptions: {
3+
target: 'esnext',
4+
module: 'esnext',
5+
moduleResolution: 'node',
6+
lib: [
7+
'esnext',
8+
'esnext.asynciterable',
9+
'dom'
10+
],
11+
esModuleInterop: true,
12+
experimentalDecorators: true,
13+
allowJs: true,
14+
sourceMap: true,
15+
strict: true,
16+
noImplicitAny: false,
17+
noEmit: true,
18+
baseUrl: '.',
19+
paths: {
20+
'~/*': [
21+
'./*'
22+
],
23+
'@/*': [
24+
'./*'
25+
]
26+
},
27+
types: [
28+
'@types/node',
29+
'@nuxt/vue-app'
30+
]
31+
}
32+
}

packages/nuxt-ts/lib/utils.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const path = require('path')
2+
3+
function getNuxtBin() {
4+
const binPath = [
5+
'nuxt-edge/bin/nuxt.js',
6+
'nuxt/bin/nuxt.js',
7+
'nuxt-start-edge/bin/nuxt.js',
8+
'nuxt-start/bin/nuxt.js'
9+
]
10+
11+
for (const bin of binPath) {
12+
try {
13+
return require.resolve(bin)
14+
} catch {}
15+
}
16+
}
17+
18+
function getRootdirFromArgv() {
19+
const validCommands = ['dev', 'build', 'generate', 'start']
20+
21+
let rootDir = process.argv[2]
22+
if (validCommands.includes(rootDir)) {
23+
rootDir = process.argv[3]
24+
}
25+
if (!rootDir) {
26+
rootDir = '.'
27+
}
28+
29+
return path.resolve(process.cwd(), rootDir)
30+
}
31+
32+
module.exports = {
33+
getNuxtBin,
34+
getRootdirFromArgv
35+
}

packages/nuxt-ts/package.json

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "nuxt-ts",
3+
"version": "0.0.0",
4+
"repository": "nuxt/typescript",
5+
"license": "MIT",
6+
"files": [
7+
"bin",
8+
"lib"
9+
],
10+
"main": "lib/index.js",
11+
"dependencies": {
12+
"consola": "^2.6.1",
13+
"fs-extra": "^7.0.1",
14+
"ts-node": "^8.1.0",
15+
"typescript": "^3.4.5"
16+
},
17+
"publishConfig": {
18+
"access": "public"
19+
}
20+
}

packages/typescript/lib/module.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module.exports = function () {
2+
// TODO: Migrate from packages/webpack/src/config/base.js
3+
// if (_typescript.build && buildOptions.typescript && buildOptions.typescript.ignoreNotFoundWarnings) {
4+
// filters.push(
5+
// warn => warn.name === 'ModuleDependencyWarning' &&
6+
// /export .* was not found in /.test(warn.message)
7+
// )
8+
// }
9+
10+
// TODO: Migrate from packages/webpack/src/config/client.js
11+
// TypeScript type checker
12+
// Only performs once per client compilation and only if `ts-loader` checker is not used (transpileOnly: true)
13+
// if (_typescript.build && buildOptions.typescript && buildOptions.typescript.typeCheck && !this.isModern && this.loaders.ts.transpileOnly) {
14+
// const ForkTsCheckerWebpackPlugin = require(this.buildContext.nuxt.resolver.resolveModule('fork-ts-checker-webpack-plugin'))
15+
// plugins.push(new ForkTsCheckerWebpackPlugin(Object.assign({
16+
// vue: true,
17+
// tsconfig: path.resolve(rootDir, 'tsconfig.json'),
18+
// tslint: false, // We recommend using ESLint so we set this option to `false` by default
19+
// formatter: 'codeframe',
20+
// logger: consola
21+
// }, buildOptions.typescript.typeCheck)))
22+
// }
23+
}

packages/typescript/package.json

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"name": "@nuxt/typescript",
3+
"version": "0.0.0",
4+
"repository": "nuxt/typescript",
5+
"license": "MIT",
6+
"files": [
7+
"lib"
8+
],
9+
"dependencies": {
10+
"@types/babel__core": "^7.1.1",
11+
"@types/chokidar": "^2.1.3",
12+
"@types/compression": "^0.0.36",
13+
"@types/etag": "^1.8.0",
14+
"@types/express": "^4.16.1",
15+
"@types/html-minifier": "^3.5.3",
16+
"@types/node": "^11.13.10",
17+
"@types/optimize-css-assets-webpack-plugin": "^1.3.4",
18+
"@types/serve-static": "^1.13.2",
19+
"@types/terser-webpack-plugin": "^1.2.1",
20+
"@types/webpack": "^4.4.31",
21+
"@types/webpack-bundle-analyzer": "^2.13.1",
22+
"@types/webpack-dev-middleware": "^2.0.2",
23+
"@types/webpack-hot-middleware": "^2.16.5",
24+
"consola": "^2.6.1",
25+
"fork-ts-checker-webpack-plugin": "^1.3.1",
26+
"fs-extra": "^7.0.1",
27+
"ts-loader": "^6.0.0",
28+
"typescript": "^3.4.5",
29+
"vue-property-decorator": "^8.1.1"
30+
},
31+
"publishConfig": {
32+
"access": "public"
33+
},
34+
"engines": {
35+
"node": ">=8.6.0"
36+
}
37+
}

test/fixture/layouts/default.vue

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<template>
2+
<Nuxt />
3+
</template>
4+
5+
<script lang="ts">
6+
import { Component, Vue } from 'vue-property-decorator'
7+
8+
@Component({
9+
middleware: 'test'
10+
})
11+
export default class DefaultLayout extends Vue {}
12+
</script>

test/fixture/middleware/test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default () => {}

0 commit comments

Comments
 (0)