Skip to content

Commit

Permalink
chore(deps): update devdependency eslint to v8 (#472)
Browse files Browse the repository at this point in the history
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Xin Du (Clark) <clark.duxin@gmail.com>
  • Loading branch information
3 people committed Nov 28, 2021
1 parent cf49512 commit 96b1683
Show file tree
Hide file tree
Showing 7 changed files with 485 additions and 310 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@
"@nuxt/types": "^2.15.8",
"@nuxt/typescript-build": "^2.1.0",
"@nuxt/typescript-runtime": "^2.1.0",
"@nuxtjs/eslint-config-typescript": "^6.0.1",
"@nuxtjs/eslint-config-typescript": "^7.0.2",
"@types/jest": "^27.0.3",
"@types/sass": "^1.43.1",
"codecov": "^3.8.2",
"eslint": "^7.32.0",
"eslint": "^8.3.0",
"husky": "^7.0.0",
"jest": "^27.3.1",
"nuxt": "^2.15.8",
Expand Down
33 changes: 24 additions & 9 deletions src/build.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
import path from 'path'
import fs from 'fs'
import { ModuleThis } from '@nuxt/types/config/module'
import { Module } from '@nuxt/types/config/module'
import { Options } from './options'

export default function setupBuild (this: ModuleThis, options: Options) {
const setupBuild: Module<Options> = function (
options
) {
if (!options.treeShake) {
this.options.css!.push('vuetify/dist/vuetify.css')
}

// Enable tree-shaking with VuetifyLoader (https://github.com/vuetifyjs/vuetify-loader)
if (options.treeShake) {
const VuetifyLoaderPlugin = this.nuxt.resolver.requireModule('vuetify-loader/lib/plugin')

;(this.options.build!.transpile! as string[]).push('vuetify/lib')
const VuetifyLoaderPlugin = this.nuxt.resolver.requireModule(
'vuetify-loader/lib/plugin'
);
(this.options.build!.transpile! as string[]).push('vuetify/lib')

this.extendBuild((config) => {
config.plugins!.push(new VuetifyLoaderPlugin(typeof options.treeShake === 'object' ? options.treeShake.loaderOptions : {}))
config.plugins!.push(
new VuetifyLoaderPlugin(
typeof options.treeShake === 'object'
? options.treeShake.loaderOptions
: {}
)
)
})
}

Expand All @@ -27,14 +36,18 @@ export default function setupBuild (this: ModuleThis, options: Options) {
delete vuetifyOptions.preset
delete vuetifyOptions.treeShake

let optionsPath: string | null = this.nuxt.resolver.resolveAlias(options.optionsPath ||
path.join(this.options.dir!.app || 'app', 'vuetify', 'options.js'))
let optionsPath: string | null = this.nuxt.resolver.resolveAlias(
options.optionsPath ||
path.join(this.options.dir!.app || 'app', 'vuetify', 'options.js')
)

optionsPath = fs.existsSync(optionsPath!) ? optionsPath : null

// Register options template
this.addTemplate({
fileName: `vuetify/options.${optionsPath && optionsPath.endsWith('ts') ? 'ts' : 'js'}`,
fileName: `vuetify/options.${
optionsPath && optionsPath.endsWith('ts') ? 'ts' : 'js'
}`,
src: optionsPath || path.resolve(__dirname, '../templates', 'options.js'),
options: vuetifyOptions
})
Expand All @@ -50,3 +63,5 @@ export default function setupBuild (this: ModuleThis, options: Options) {
}
})
}

export default setupBuild
6 changes: 4 additions & 2 deletions src/font.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ModuleThis } from '@nuxt/types/config/module'
import { Module } from '@nuxt/types/config/module'

import type { SassOptionsV10 } from './sass'

Expand All @@ -7,7 +7,7 @@ export interface FontOptions {
size?: number
}

export default function setupFont (this: ModuleThis, options: FontOptions) {
const setupFont: Module<FontOptions> = function (options) {
const family = `${options.family}:100,300,400,500,700,900&display=swap`

/* istanbul ignore else */
Expand Down Expand Up @@ -38,3 +38,5 @@ export default function setupFont (this: ModuleThis, options: FontOptions) {
sass.additionalData = [`$font-size-root: ${options.size}px`, sass.additionalData].join('\n')
}
}

export default setupFont
6 changes: 4 additions & 2 deletions src/icons.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ModuleThis } from '@nuxt/types/config/module'
import { Module } from '@nuxt/types/config/module'

const presetsCDN = {
mdi: 'https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css',
Expand All @@ -9,7 +9,7 @@ const presetsCDN = {

export type IconPreset = keyof typeof presetsCDN

export default function setupIcons (this: ModuleThis, preset: IconPreset) {
const setupIcons : Module<IconPreset> = function (preset) {
// istanbul ignore else
if (presetsCDN[preset] && typeof this.options.head === 'object') {
this.options.head!.link!.push({
Expand All @@ -19,3 +19,5 @@ export default function setupIcons (this: ModuleThis, preset: IconPreset) {
})
}
}

export default setupIcons
4 changes: 2 additions & 2 deletions src/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import merge from 'deepmerge'

import { SFCDescriptor } from 'vue-template-compiler'
import { UserVuetifyPreset } from 'vuetify/types/services/presets'
import { ModuleThis } from '@nuxt/types/config/module'
import { NuxtOptions } from '@nuxt/types/config'

import { FontOptions } from './font'
import { IconPreset } from './icons'
Expand Down Expand Up @@ -46,7 +46,7 @@ export const defaults = {
treeShake: process.env.NODE_ENV === 'production'
}

export default function initOptions (this: ModuleThis, moduleOptions?: Options): Required<Options> {
export default function initOptions (this: { options: NuxtOptions }, moduleOptions?: Options): Required<Options> {
const options = merge.all([
defaults,
this.options.vuetify || {},
Expand Down
28 changes: 21 additions & 7 deletions src/sass.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
import { NuxtOptionsLoaders } from '@nuxt/types/config/build'
import { ModuleThis } from '@nuxt/types/config/module'
import { NuxtOptionsBuild } from '@nuxt/types/config/build'
import { Module } from '@nuxt/types/config/module'
import dartSass from 'sass'
import { Options as SassOptions } from 'sass-loader'
import { Options } from './options'

export type SassOptionsV10 = SassOptions & { additionalData?: string, indentedSyntax?: boolean }
export type SassOptionsV10 = SassOptions & {
additionalData?: string;
indentedSyntax?: boolean;
};

export default function setupSass (this: ModuleThis, customVariables: Options['customVariables']) {
const { sass, scss } : { sass: SassOptionsV10, scss: SassOptionsV10} = this.options.build!.loaders as Required<Pick<NuxtOptionsLoaders, 'sass' | 'scss'>>
const setupSass: Module<Options['customVariables']> = function (
customVariables
) {
const { sass, scss }: { sass: SassOptionsV10; scss: SassOptionsV10 } = this
.options.build!.loaders as Required<
Pick<NonNullable<NuxtOptionsBuild['loaders']>, 'sass' | 'scss'>
>

// Use Dart Sass
sass.implementation = scss.implementation = dartSass
Expand All @@ -22,9 +30,15 @@ export default function setupSass (this: ModuleThis, customVariables: Options['c

// Custom variables
if (customVariables && customVariables.length > 0) {
const sassImports = customVariables.map(path => `@import '${path}'`).join('\n')
const sassImports = customVariables
.map(path => `@import '${path}'`)
.join('\n')
sass.additionalData = [sass.additionalData, sassImports].join('\n')
const scssImports = customVariables.map(path => `@import '${path}';`).join('\n')
const scssImports = customVariables
.map(path => `@import '${path}';`)
.join('\n')
scss.additionalData = [scss.additionalData, scssImports].join('\n')
}
}

export default setupSass

0 comments on commit 96b1683

Please sign in to comment.