From 83c1eca443acf9b6be7741f29a8bd542a82dac33 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sun, 7 Nov 2021 22:19:18 +0100 Subject: [PATCH] Import nuxt 3 and edit to script setup --- nuxt.config.ts | 143 +- package.json | 11 +- settings/Arch.ts | 48 - settings/AxiosConfig.ts | 5 + settings/Build.ts | 15 - settings/BuildModules.ts | 40 - settings/ColorModeConfig.ts | 6 + settings/EnvConfig.ts | 3 + settings/Head.ts | 46 - settings/HeadConfig.ts | 11 + settings/I18nConfig.ts | 24 + settings/Modules.ts | 98 - settings/Plugins.ts | 6 - settings/RedirectConfig.ts | 6 + settings/RobotsConfig.ts | 5 + settings/RuntimeConfig.ts | 9 - settings/SentryConfig.ts | 3 + settings/SiteMapConfig.ts | 7 + settings/StorageConfig.ts | 8 + settings/Style.ts | 4 - settings/WindicssConfig.ts | 23 + src/app.vue | 9 + src/components/AboutHome.vue | 36 +- src/components/Ad.vue | 45 +- src/components/Announce.vue | 67 +- src/components/Banner.vue | 38 +- src/components/Button.vue | 28 +- src/components/ContactForm.vue | 88 +- src/components/EnvListItem.vue | 37 +- src/components/Experience.vue | 82 +- src/components/ExperiencesAbout.vue | 40 +- src/components/Footer.vue | 55 +- src/components/Formation.vue | 82 +- src/components/FormationsAbout.vue | 39 +- src/components/Header.vue | 66 +- src/components/MobileNavbar.vue | 72 +- src/components/Post.vue | 120 +- src/components/PostsHome.vue | 36 +- src/components/Project.vue | 57 +- src/components/ProjectsHome.vue | 36 +- src/components/Scroller.vue | 38 +- src/components/ServicePart.vue | 17 +- src/components/SideMenu.vue | 76 +- src/components/Skill.vue | 108 +- src/components/SkillsAbout.vue | 36 +- src/components/Tag.vue | 27 +- src/components/icons/AdonisIcon.vue | 2 +- src/components/icons/GithubIcon.vue | 2 +- src/components/icons/MailIcon.vue | 2 +- src/components/icons/TwitchIcon.vue | 2 +- src/components/icons/TwitterIcon.vue | 2 +- src/layouts/default.vue | 5 +- src/layouts/error.vue | 2 +- src/pages/blog/index.vue | 2 +- src/pages/maintenance.vue | 2 +- src/pages/newsletter.vue | 2 +- src/pages/projects.vue | 2 +- src/plugins/Blobity.ts | 2 +- tsconfig.json | 5 +- yarn.lock | 8491 ++++++++------------------ 60 files changed, 3293 insertions(+), 7086 deletions(-) delete mode 100755 settings/Arch.ts create mode 100644 settings/AxiosConfig.ts delete mode 100755 settings/Build.ts delete mode 100755 settings/BuildModules.ts create mode 100644 settings/ColorModeConfig.ts create mode 100644 settings/EnvConfig.ts delete mode 100755 settings/Head.ts create mode 100644 settings/HeadConfig.ts create mode 100644 settings/I18nConfig.ts delete mode 100755 settings/Modules.ts delete mode 100755 settings/Plugins.ts create mode 100644 settings/RedirectConfig.ts create mode 100644 settings/RobotsConfig.ts delete mode 100755 settings/RuntimeConfig.ts create mode 100644 settings/SentryConfig.ts create mode 100644 settings/SiteMapConfig.ts create mode 100644 settings/StorageConfig.ts delete mode 100755 settings/Style.ts create mode 100644 settings/WindicssConfig.ts create mode 100644 src/app.vue diff --git a/nuxt.config.ts b/nuxt.config.ts index 4d103bb..3522cdf 100755 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,22 +1,125 @@ -import head from './settings/Head' -import buildModules from './settings/BuildModules' -import modules from './settings/Modules' -import build from './settings/Build' -import arch from './settings/Arch' -import plugins from './settings/Plugins' -import css from './settings/Style' -import configs from './settings/RuntimeConfig' -import {NuxtConfig} from "@nuxt/types"; +import WindicssConfig from "./settings/WindicssConfig"; +import ColorModeConfig from "./settings/ColorModeConfig"; +import HeadConfig from "./settings/HeadConfig"; +import SentryConfig from "./settings/SentryConfig"; +import AxiosConfig from "./settings/AxiosConfig"; +import I18nConfig from "./settings/I18nConfig"; +import StorageConfig from "./settings/StorageConfig"; +import RobotsConfig from "./settings/RobotsConfig"; +import EnvConfig from "./settings/EnvConfig"; +import RedirectConfig from "./settings/RedirectConfig"; +import SiteMapConfig from "./settings/SiteMapConfig"; +import {defineNuxtConfig} from "nuxt3"; -const config = { - head, - modules, - ...arch, - build, - plugins, - css, - buildModules, - ...configs, -} as NuxtConfig +export default defineNuxtConfig({ + target: 'server', + ssr: true, -export default config + server: { + host: '0.0.0.0', + port: 3333 + }, + + proxy: { + '/api': { + target: 'https://athena.arthurdanjou.fr', + pathRewrite: { "^/api": "" } + } + }, + + router: { + middleware: [ + 'maintenance' + ] + }, + + srcDir: 'src', + dir: { + assets: 'assets', + layouts: 'layouts', + middleware: 'middlewares', + pages: 'pages', + static: 'static', + store: 'store', + }, + + components: [ + 'components', + 'components/icons' + ], + + build: { + extractCSS: true, + babel: { + plugins: [ + ['@babel/plugin-proposal-private-methods', { loose: true }] + ], + } + }, + + pageTransition: { + name: 'page', + mode: 'out-in', + }, + + buildModules: [ + ['nuxt-windicss', WindicssConfig], + // ['@nuxtjs/color-mode', ColorModeConfig], + ], + + modules: [ + // ['@nuxtjs/axios', AxiosConfig], + // ['@nuxtjs/i18n', I18nConfig], + // ['@nuxt/content', content], + // ['@nuxtjs/universal-storage', StorageConfig], + // ['@nuxtjs/robots', RobotsConfig], + // ['@nuxtjs/sitemap', SiteMapConfig], + // ['@nuxtjs/redirect-module', RedirectConfig], + // ['@nuxtjs/dotenv', EnvConfig], + // ['@nuxtjs/sentry', SentryConfig] + ], + + head: { + meta: [ + { charset: 'utf-8' }, + { lang: 'fr-FR' }, + { name: 'viewport', content: 'width=device-width, initial-scale=1' }, + { hid: 'description', name: 'description', content: HeadConfig.description }, + + /** + * Open graph + * See : https://ogp.me/ + */ + { hid: 'og:type', name: 'og:type', content: 'website' }, + { hid: 'og:url', name: 'og:url', content: HeadConfig.url }, + { hid: 'og:title', name: 'og:title', content: HeadConfig.title }, + { hid: 'og:site_name', name: 'og:site_name', content: HeadConfig.title }, + { hid: 'og:locale', name: 'og:locale', content: 'fr' }, + { hid: 'og:image', name: 'og:image', content: HeadConfig.image }, + + { name: 'msapplication-TileColor', content: HeadConfig.color }, + { name: 'theme-color', content: HeadConfig.color }, + ], + link: [ + { rel: 'icon', type: HeadConfig.favicon.type, href: HeadConfig.favicon.href }, + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.googleapis.com', crossOrigin: 'true' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Raleway:wght@500&family=Roboto:wght@900&display=swap' } + ], + }, + + plugins: [ + { + src: '~/plugins/i18n.ts' + } + ], + + publicRuntimeConfig: { + + }, + + privateRuntimeConfig: { + API_TOKEN: process.env.API_TOKEN, + SENTRY_DSN: process.env.SENTRY_DSN + } +}) diff --git a/package.json b/package.json index 2656ec7..c3d77f1 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,13 @@ "version": "1.0.0", "private": true, "scripts": { - "dev": "nuxt", - "build": "nuxt build", - "start": "nuxt start", + "dev": "nuxi dev", + "build": "nuxi build", + "start": "node .nuxt/server/index.mjs", "analyse": "windicss-analysis" }, "dependencies": { - "@nuxt/content": "^1.15.0", "@nuxtjs/axios": "^5.13.6", - "@nuxtjs/composition-api": "^0.29.3", "@nuxtjs/dotenv": "^1.4.1", "@nuxtjs/i18n": "^7.1.0", "@nuxtjs/proxy": "^2.1.0", @@ -23,13 +21,12 @@ "axios": "^0.24.0", "blobity": "^0.1.7", "core-js": "^3.19.1", - "nuxt": "^2.15.8", + "nuxt3": "latest", "prism-themes": "^1.9.0", "sass": "^1.43.4" }, "devDependencies": { "@nuxt/types": "^2.15.8", - "@nuxt/typescript-build": "^2.1.0", "@nuxtjs/color-mode": "^2.1.1", "markdown-it-prism": "^2.2.1", "nuxt-windicss": "^2.0.11", diff --git a/settings/Arch.ts b/settings/Arch.ts deleted file mode 100755 index e60cba3..0000000 --- a/settings/Arch.ts +++ /dev/null @@ -1,48 +0,0 @@ -const srcDir = 'src' - -const dir = { - assets: 'assets', - layouts: 'layouts', - middleware: 'middlewares', - pages: 'pages', - static: 'static', - store: 'store', -} - -const build = { - extractCss: true, -} - -const pageTransition = { - name: 'page', - mode: 'out-in', -} - -const target = 'server' - -const server = { - port: 3333, - host: '0.0.0.0' -} - -const components = [ - 'components', - 'components/icons' -] - -const buildDir = '.nuxt' - -const ssr = true - -const proxy = { - '/api': { - target: 'https://athena.arthurdanjou.fr', - pathRewrite: { "^/api": "" } - } -} - -const router = { - middleware: 'maintenance' -} - -export default { router, srcDir, dir, build, pageTransition, target, server, buildDir, components, ssr, proxy } diff --git a/settings/AxiosConfig.ts b/settings/AxiosConfig.ts new file mode 100644 index 0000000..39d5958 --- /dev/null +++ b/settings/AxiosConfig.ts @@ -0,0 +1,5 @@ +export default { + proxy: true, + credentials: true, + proxyHeaders: true +} diff --git a/settings/Build.ts b/settings/Build.ts deleted file mode 100755 index f712d21..0000000 --- a/settings/Build.ts +++ /dev/null @@ -1,15 +0,0 @@ -// Build Configuration: https://go.nuxtjs.dev/config-build -export default { - babel: { - plugins: [ - ['@babel/plugin-proposal-private-methods', { loose: true }] - ], - }, - postcss: { - preset: { - features: { - "focus-within-pseudo-class": false - } - } - } -} diff --git a/settings/BuildModules.ts b/settings/BuildModules.ts deleted file mode 100755 index 1c17d58..0000000 --- a/settings/BuildModules.ts +++ /dev/null @@ -1,40 +0,0 @@ -// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules -import {NuxtOptionsModule} from "@nuxt/types/config/module"; - -const color_mode = { - preference: 'system', - fallback: 'light', - classPrefix: '', - classSuffix: '', -} - -const windicss = { - scan: { - dirs: [ './' ], - exclude: [ - 'node_modules', - '.git', - '.nuxt/**/*', - 'build/**/*', - '*.template.html', - 'app.html' - ], - include: [] - }, - transformCSS: 'pre', - preflight: { - alias: { - // add nuxt aliases - 'nuxt-link': 'a', - // @nuxt/image module - 'nuxt-img': 'img', - } - } -} - -export default [ - '@nuxt/typescript-build', - '@nuxtjs/composition-api/module', - ['nuxt-windicss', windicss], - ['@nuxtjs/color-mode', color_mode], -] as NuxtOptionsModule[] diff --git a/settings/ColorModeConfig.ts b/settings/ColorModeConfig.ts new file mode 100644 index 0000000..ff4b94e --- /dev/null +++ b/settings/ColorModeConfig.ts @@ -0,0 +1,6 @@ +export default { + preference: 'system', + fallback: 'light', + classPrefix: '', + classSuffix: '', +} diff --git a/settings/EnvConfig.ts b/settings/EnvConfig.ts new file mode 100644 index 0000000..6f7e05f --- /dev/null +++ b/settings/EnvConfig.ts @@ -0,0 +1,3 @@ +export default { + path: process.cwd() +} diff --git a/settings/Head.ts b/settings/Head.ts deleted file mode 100755 index c23d6c3..0000000 --- a/settings/Head.ts +++ /dev/null @@ -1,46 +0,0 @@ -// Global page headers: https://go.nuxtjs.dev/config-head -import {NuxtOptionsHead} from "@nuxt/types/config/head"; - -const params = { - title: 'arthurdanjou.fr - Web & Software Developer', - color: '#00a0ff', - image: '/images/memojies/Hey.png', - url: 'https://arthurdanjou.fr', - favicon: { - type: 'image/jpg', - href: '/favicon.png', - }, - description: - 'Web & Software Developer from Paris, France.', -} - -export default { - htmlAttrs: { lang: 'fr-FR' }, - title: params.title, - meta: [ - { charset: 'utf-8' }, - { lang: 'fr-FR' }, - { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - { hid: 'description', name: 'description', content: params.description }, - - /** - * Open graph - * See : https://ogp.me/ - */ - { hid: 'og:type', name: 'og:type', content: 'website' }, - { hid: 'og:url', name: 'og:url', content: params.url }, - { hid: 'og:title', name: 'og:title', content: params.title }, - { hid: 'og:site_name', name: 'og:site_name', content: params.title }, - { hid: 'og:locale', name: 'og:locale', content: 'fr' }, - { hid: 'og:image', name: 'og:image', content: params.image }, - - { name: 'msapplication-TileColor', content: params.color }, - { name: 'theme-color', content: params.color }, - ], - link: [ - { rel: 'icon', type: params.favicon.type, href: params.favicon.href }, - { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, - { rel: 'preconnect', href: 'https://fonts.googleapis.com', crossOrigin: 'true' }, - { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Raleway:wght@500&family=Roboto:wght@900&display=swap' } - ], -} as NuxtOptionsHead diff --git a/settings/HeadConfig.ts b/settings/HeadConfig.ts new file mode 100644 index 0000000..d00c88f --- /dev/null +++ b/settings/HeadConfig.ts @@ -0,0 +1,11 @@ +export default { + title: 'arthurdanjou.fr - Web & Software Developer', + color: '#00a0ff', + image: '/images/memojies/Hey.png', + url: 'https://arthurdanjou.fr', + favicon: { + type: 'image/jpg', + href: '/favicon.png', + }, + description: 'Web & Software Developer from Paris, France.', +} diff --git a/settings/I18nConfig.ts b/settings/I18nConfig.ts new file mode 100644 index 0000000..f3beae1 --- /dev/null +++ b/settings/I18nConfig.ts @@ -0,0 +1,24 @@ +export default { + locales: [ + { + code: 'en', + name: 'English', + iso: 'en-EN', + file: 'en-EN.ts', + }, + { + code: 'fr', + name: 'Français', + iso: 'fr-FR', + file: 'fr-FR.ts' + }, + ], + strategy: 'no_prefix', + defaultLocale: 'en', + langDir: 'locales/', + lazy: true, + seo: true, + vueI18n: { + fallbackLocale: 'en', + }, +} diff --git a/settings/Modules.ts b/settings/Modules.ts deleted file mode 100755 index ec2e668..0000000 --- a/settings/Modules.ts +++ /dev/null @@ -1,98 +0,0 @@ -import {NuxtOptionsModule} from "@nuxt/types/config/module"; - -const axios = { - proxy: true, - credentials: true, - proxyHeaders: true -} - -const i18n = { - locales: [ - { - code: 'en', - name: 'English', - iso: 'en-EN', - file: 'en-EN.ts', - }, - { - code: 'fr', - name: 'Français', - iso: 'fr-FR', - file: 'fr-FR.ts' - }, - ], - strategy: 'no_prefix', - defaultLocale: 'en', - langDir: 'locales/', - lazy: true, - seo: true, - vueI18n: { - fallbackLocale: 'en', - }, -} - -const content = { - nestedProperties: ['skills.slug'], - markdown: { - prism: { - theme: 'prism-themes/themes/prism-darcula.css' - }, - remarkPlugins: [ - 'remark-squeeze-paragraphs', - 'remark-slug', - 'remark-autolink-headings', - 'remark-external-links', - 'remark-footnotes', - ], - } -} - -const storage = { - cookie: { - prefix: 'arthurdanjou.fr/', - options: { - path: '/' - } - }, -} - -const sitemap = { - path: '/sitemap.xml', - hostname: 'https://arthurdanjou.fr', - cacheTime: 720000, - gzip: true, - generate: false, -} - -const robots = { - UserAgent: '*', - Sitemap: 'https://arthurdanjou.fr/sitemap.xml', - Allow: '*' -} - -const redirect = [ - { from: '/source', to: 'https://github.com/arthurdanjou/ares' }, - { from: '/shelf', to: '/blog' }, - { from: '/posts', to: '/blog' }, - { from: '/resume', to: '/cv' } -] - -const env = { - path: process.cwd() -} - -const sentry = { - dsn: process.env.SENTRY_DSN -} - -export default [ - ['@nuxtjs/axios', axios], - ['@nuxtjs/i18n', i18n], - ['@nuxt/content', content], - ['@nuxtjs/universal-storage', storage], - ['@nuxtjs/robots', robots], - ['@nuxtjs/sitemap', sitemap], - ['@nuxtjs/redirect-module', redirect], - ['@nuxtjs/dotenv', env], - ['@nuxtjs/sentry', sentry] -] as NuxtOptionsModule[] diff --git a/settings/Plugins.ts b/settings/Plugins.ts deleted file mode 100755 index 5f9f369..0000000 --- a/settings/Plugins.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins -export default [ - { - src: '~/plugins/i18n.ts' - } -] diff --git a/settings/RedirectConfig.ts b/settings/RedirectConfig.ts new file mode 100644 index 0000000..605f70d --- /dev/null +++ b/settings/RedirectConfig.ts @@ -0,0 +1,6 @@ +export default [ + { from: '/source', to: 'https://github.com/arthurdanjou/ares' }, + { from: '/shelf', to: '/blog' }, + { from: '/posts', to: '/blog' }, + { from: '/resume', to: '/cv' } +] diff --git a/settings/RobotsConfig.ts b/settings/RobotsConfig.ts new file mode 100644 index 0000000..379628d --- /dev/null +++ b/settings/RobotsConfig.ts @@ -0,0 +1,5 @@ +export default { + UserAgent: '*', + Sitemap: 'https://arthurdanjou.fr/sitemap.xml', + Allow: '*' +} diff --git a/settings/RuntimeConfig.ts b/settings/RuntimeConfig.ts deleted file mode 100755 index 37dd007..0000000 --- a/settings/RuntimeConfig.ts +++ /dev/null @@ -1,9 +0,0 @@ -const publicRuntimeConfig = { -} - -const privateRuntimeConfig = { - API_TOKEN: process.env.API_TOKEN, - SENTRY_DSN: process.env.SENTRY_DSN -} - -export default { publicRuntimeConfig, privateRuntimeConfig} diff --git a/settings/SentryConfig.ts b/settings/SentryConfig.ts new file mode 100644 index 0000000..5385a08 --- /dev/null +++ b/settings/SentryConfig.ts @@ -0,0 +1,3 @@ +export default { + dsn: process.env.SENTRY_DSN +} diff --git a/settings/SiteMapConfig.ts b/settings/SiteMapConfig.ts new file mode 100644 index 0000000..9dd5780 --- /dev/null +++ b/settings/SiteMapConfig.ts @@ -0,0 +1,7 @@ +export default { + path: '/sitemap.xml', + hostname: 'https://arthurdanjou.fr', + cacheTime: 720000, + gzip: true, + generate: false, +} diff --git a/settings/StorageConfig.ts b/settings/StorageConfig.ts new file mode 100644 index 0000000..9344b36 --- /dev/null +++ b/settings/StorageConfig.ts @@ -0,0 +1,8 @@ +export default { + cookie: { + prefix: 'arthurdanjou.fr/', + options: { + path: '/' + } + }, +} diff --git a/settings/Style.ts b/settings/Style.ts deleted file mode 100755 index b2041dc..0000000 --- a/settings/Style.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Global CSS: https://go.nuxtjs.dev/config-css -export default [ - '@/assets/css/style.scss' -] diff --git a/settings/WindicssConfig.ts b/settings/WindicssConfig.ts new file mode 100644 index 0000000..b45bbbc --- /dev/null +++ b/settings/WindicssConfig.ts @@ -0,0 +1,23 @@ +export default { + scan: { + dirs: [ './' ], + exclude: [ + 'node_modules', + '.git', + '.nuxt/**/*', + 'build/**/*', + '*.template.html', + 'app.html' + ], + include: [] + }, + transformCSS: 'pre', + preflight: { + alias: { + // add nuxt aliases + 'nuxt-link': 'a', + // @nuxt/image module + 'nuxt-img': 'img', + } + } +} diff --git a/src/app.vue b/src/app.vue new file mode 100644 index 0000000..5d3f019 --- /dev/null +++ b/src/app.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/components/AboutHome.vue b/src/components/AboutHome.vue index e95571e..1f4327d 100644 --- a/src/components/AboutHome.vue +++ b/src/components/AboutHome.vue @@ -19,31 +19,21 @@ - diff --git a/src/components/Ad.vue b/src/components/Ad.vue index 95d064d..8f1fe13 100755 --- a/src/components/Ad.vue +++ b/src/components/Ad.vue @@ -4,36 +4,23 @@ - diff --git a/src/components/Announce.vue b/src/components/Announce.vue index 1f5f5f0..38bc7ca 100644 --- a/src/components/Announce.vue +++ b/src/components/Announce.vue @@ -16,48 +16,37 @@ -