Skip to content

Commit 16c2bca

Browse files
feat: compatible with Nuxt 2.14 and typescript 4 (#395)
Co-authored-by: Xin Du (Clark) <[email protected]>
1 parent 350de6a commit 16c2bca

File tree

8 files changed

+4419
-4288
lines changed

8 files changed

+4419
-4288
lines changed

package.json

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,20 @@
3838
"devDependencies": {
3939
"@commitlint/cli": "^8.3.5",
4040
"@commitlint/config-conventional": "^8.3.4",
41-
"@nuxt/typescript-build": "^0.6.7",
42-
"@nuxt/typescript-runtime": "^0.4.10",
43-
"@nuxtjs/eslint-config-typescript": "^1.0.2",
44-
"@types/jest": "^25.2.3",
41+
"@nuxt/types": "^2.15.6",
42+
"@nuxt/typescript-build": "^2.0.3",
43+
"@nuxt/typescript-runtime": "^2.0.0",
44+
"@nuxtjs/eslint-config-typescript": "^4.0.0",
45+
"@types/jest": "^26.0.15",
4546
"@types/sass": "^1.16.0",
4647
"codecov": "^3.8.2",
47-
"eslint": "^6.8.0",
48-
"husky": "^4.3.8",
49-
"jest": "^25.5.4",
50-
"nuxt-edge": "2.11.1-26378723.c5d0067",
48+
"eslint": "^7.11.0",
49+
"husky": "^4.2.5",
50+
"jest": "^26.6.0",
51+
"nuxt": "^2.15.6",
5152
"nuxt-webfontloader": "^1.1.0",
5253
"standard-version": "^9.3.0",
53-
"ts-jest": "^25.5.1",
54-
"typescript": "~3.8"
54+
"ts-jest": "^26.4.1",
55+
"typescript": "~4.0"
5556
}
5657
}

src/font.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { ModuleThis } from '@nuxt/types/config/module'
22

3+
import type { SassOptionsV10 } from './sass'
4+
35
export interface FontOptions {
46
family?: string | string[]
57
size?: number
@@ -8,19 +10,20 @@ export interface FontOptions {
810
export default function setupFont (this: ModuleThis, options: FontOptions) {
911
const family = `${options.family}:100,300,400,500,700,900&display=swap`
1012

13+
/* istanbul ignore else */
1114
if (this.options.modules!.some(mod => mod === 'nuxt-webfontloader')) {
1215
this.options.webfontloader = this.options.webfontloader || {}
1316
this.options.webfontloader.google = this.options.webfontloader.google || {}
1417
this.options.webfontloader.google.families = [...this.options.webfontloader.google.families || [], family]
15-
} else {
16-
this.options.head!.link!.push({
18+
} else if (typeof this.options.head === 'object') {
19+
this.options.head.link!.push({
1720
rel: 'stylesheet',
1821
type: 'text/css',
1922
href: `https://fonts.googleapis.com/css?family=${family}`
2023
})
2124
}
2225

23-
const sass = this.options.build!.loaders!.sass!
26+
const sass : SassOptionsV10 = this.options.build!.loaders!.sass!
2427

2528
// Add font-family custom variable (only if not Roboto, cause already default in Vuetify styles)
2629
if (options.family !== 'Roboto') {

src/icons.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export type IconPreset = keyof typeof presetsCDN
1111

1212
export default function setupIcons (this: ModuleThis, preset: IconPreset) {
1313
// istanbul ignore else
14-
if (presetsCDN[preset]) {
14+
if (presetsCDN[preset] && typeof this.options.head === 'object') {
1515
this.options.head!.link!.push({
1616
rel: 'stylesheet',
1717
type: 'text/css',

src/options.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@ import { ModuleThis } from '@nuxt/types/config/module'
77
import { FontOptions } from './font'
88
import { IconPreset } from './icons'
99

10-
export interface TreeShakeOptions {
11-
components?: string[]
12-
directives?: string[]
13-
loaderOptions?: VuetifyLoaderOptions
14-
transitions?: string[]
15-
}
16-
1710
export interface VuetifyLoaderOptions {
1811
match?(originalTag: string, context: {
1912
kebabTag: string,
@@ -23,6 +16,13 @@ export interface VuetifyLoaderOptions {
2316
}): [string, string] | undefined
2417
}
2518

19+
export interface TreeShakeOptions {
20+
components?: string[]
21+
directives?: string[]
22+
loaderOptions?: VuetifyLoaderOptions
23+
transitions?: string[]
24+
}
25+
2626
export interface Options extends Omit<UserVuetifyPreset, 'preset'> {
2727
customVariables?: string[]
2828
defaultAssets?: {

src/sass.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
import { NuxtConfigurationLoaders } from '@nuxt/types/config/build'
1+
import { NuxtOptionsLoaders } from '@nuxt/types/config/build'
22
import { ModuleThis } from '@nuxt/types/config/module'
33
import dartSass from 'sass'
4+
import { Options as SassOptions } from 'sass-loader'
45
import { Options } from './options'
56

7+
export type SassOptionsV10 = SassOptions & { additionalData?: string, indentedSyntax?: boolean }
8+
69
export default function setupSass (this: ModuleThis, customVariables: Options['customVariables']) {
7-
const { sass, scss } = this.options.build!.loaders as Required<Pick<NuxtConfigurationLoaders, 'sass' | 'scss'>>
10+
const { sass, scss } : { sass: SassOptionsV10, scss: SassOptionsV10} = this.options.build!.loaders as Required<Pick<NuxtOptionsLoaders, 'sass' | 'scss'>>
811

912
// Use Dart Sass
1013
sass.implementation = scss.implementation = dartSass

test/module.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Nuxt } from '@nuxt/core-edge'
1+
import { Nuxt } from '@nuxt/core'
22
import dartSass from 'sass'
33
import VuetifyLoaderPlugin from 'vuetify-loader/lib/plugin'
44

tsconfig.test.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"compilerOptions": {
3-
"target": "esnext",
4-
"lib": ["dom", "esnext"],
3+
"target": "es2019",
4+
"lib": ["dom", "es2019"],
55
"module": "esnext",
66
"moduleResolution": "node",
77
"skipLibCheck": true,

0 commit comments

Comments
 (0)