Posts
Q&A
Nuxt 3 ์์ eslint, prettier ์ฌ์ฉ ๋ฐฉ๋ฒ
Nuxt2 ์ฒ๋ผ eslint ์ prettier ๊ด๋ จ ํจํค์ง๋ฅผ ์ถ๊ฐํ๊ณ ํ๊ฒฝ ์ค์ ์ ํด์ ํด๊ฒฐํ์์ต๋๋ค.์ค์นํ ํจํค์ง๋ ์๋์ ๊ฐ์ต๋๋ค. ์ผ๋จ Typescript๋ ์ฌ์ฉํ์ง ์์์ ๊ด๋ จ ํจํค์ง๋ ์ ์ธํ์์ต๋๋ค."devDependencies": { "eslint": "^8.23.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-nuxt": "^3.2.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-vue": "^9.4.0", "nuxt": "3.0.0-rc.8", "prettier": "^2.7.1", "vite-plugin-eslint": "^1.8.1" }nuxt.config.tsimport { defineNuxtConfig } from 'nuxt'; import eslintPlugin from 'vite-plugin-eslint'; export default defineNuxtConfig({ vite: { plugins: [eslintPlugin()], }, });.eslintrc.jsmodule.exports = { root: true, env: { browser: true, node: true, }, extends: ['eslint:recommended', 'plugin:nuxt/recommended', 'plugin:vue/vue3-recommended', 'plugin:prettier/recommended'], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debug': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-unused-vars': 'off', 'prettier/prettier': [ 'error', { singleQuote: true, semi: true, useTabs: true, tabWidth: 4, trailingComma: 'all', printWidth: 160, bracketSpacing: true, arrowParens: 'avoid', endOfLine: 'auto', }, ], }, };Nuxt3 ๋ ์ค์ ๋ถํฐ ์์ํด์ ๋ฐ๋ ์ ์ด ๋ง๋ค์. ๊ด๋ จํด์ ๊ฐ์๊ฐ ์๊ฒผ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- 1
- 2
- 3.6K
Q&A
babel polyfill ์ ์ฉ๊ด๋ จํด์ ์ง๋ฌธ๋๋ ค๋ ๋ ๊น์?
๊ทธ๋ฅ ์ค์ ์ํ๋๋ ์ธ๋ถ๋ชจ๋(fullpage.js, swiper, gsap ๋ฑ)์ด ๋ฐ๋ฒจ ํด๋ฆฌํ์ด ์ ์ฉ์ด ์๋์ด์ ๊ฒ์ํด๋ณด๋ ๋ณ๋๋ก ์ ์ฉ์ ์์ผ์ค์ผ ํ๋ค๋๊ฒ ๊ฐ์์ ๋น๋ ์ค์ ์ ํ์ต๋๋ค. IE์์ ์๋ฌ๋ store.js(nuxt์ ํฌํจ๋ axios ์ธ๋ฏ)์์ includes ๊ตฌ๋ฌธ์์ ๋ฐ์ํ๊ตฌ์. ๊ทธ๋ฐ๋ฐ ๋ญ๊ฐ ์๋ชป๋์๋์ง ์๋๋๋ผ๊ตฌ์. ์ด๊ฒ์ ๊ฒ ๋ง ํด๋ณด๋ค๋ณด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ง์ด๊ตฌ์.ใ ใ ์ฃผ๋ง์ ์๊ฐ๋ด์ ๋ต๋ณํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 474
Q&A
Nuxt ์ babel polyfill ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํฉ๋๋ค.
๋ต๋ณ์ฃผ์ ๋ด์ฉ ์ฐธ๊ณ ํด์ ์ด๋ฆฌ์ ๋ฆฌ ํด๋ณด๋ค๋ณด๋ IE11์์ store.js ํ์ผ์์ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์๊ณ ์ฌ์ ํ ๋ช๋ช ์ปดํฌ๋ํธ๋ค์ด ํ์๋์ง ์์ต๋๋ค. SCRIPT438: ๊ฐ์ฒด๊ฐ 'includes' ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. nuxt.config.js ํ์ผ์ build ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ๊ณ , build: { extend(config, ctx) { config.module.rules.push({ enforce: 'pre', test: /\.(js|vue)$/, loader: 'eslint-loader', exclude: /(node_modules)/, options: { fix: true, }, }); }, babel: { presets(env, [preset, options]) { const envTargets = { client: { browsers: ['last 2 versions'], ie: 11 }, server: { node: 'current' }, }; return [ [ '@nuxt/babel-preset-app', { useBuiltIns: 'entry', targets: envTargets[env.envName], corejs: { version: 3 }, polyfills: ['es.array.iterator', 'es.promise', 'es.object.assign', 'es.promise.finally', 'es.array.includes', 'es.symbol'], }, ], ]; }, }, transpile: ['@nuxtjs/axios', 'gsap', 'swiper', 'vue-awesome-swiper', 'nuxt-fullpage.js', 'vue-datetime', 'vue-daum-postcode', 'vue-advanced-cropper'], }, ์์กด์ฑ์ ์๋์ฒ๋ผ ์ค์นํ์ต๋๋ค. "scripts": { "dev": "nuxt", "build": "nuxt build", "start": "nuxt start", "generate": "nuxt generate", "lint:js": "eslint --ext .js,.vue --ignore-path .gitignore .", "lint": "npm run lint:js" }, "dependencies": { "@nuxtjs/axios": "^5.12.2", "@nuxtjs/moment": "^1.6.1", "cookie-universal-nuxt": "^2.1.4", "gsap": "^3.5.1", "luxon": "^1.25.0", "nuxt": "^2.14.6", "nuxt-fullpage.js": "0.0.3", "swiper": "^5.4.5", "vue-advanced-cropper": "^0.17.9", "vue-awesome-swiper": "^4.1.1", "vue-datetime": "^1.0.0-beta.14", "vue-daum-postcode": "^0.9.0", "weekstart": "^1.0.1" }, "devDependencies": { "@babel/preset-env": "^7.12.11", "@babel/runtime-corejs3": "^7.12.5", "@nuxt/babel-preset-app": "^2.14.12", "@nuxtjs/eslint-config": "^3.1.0", "@nuxtjs/eslint-module": "^2.0.0", "babel-eslint": "^10.1.0", "babel-loader": "^8.2.2", "core-js": "^3.8.2", "eslint": "^7.10.0", "eslint-config-prettier": "^6.12.0", "eslint-plugin-nuxt": "^1.0.0", "eslint-plugin-prettier": "^3.1.4", "prettier": "^2.1.2" }, ํน์๋ ์ ๊ฐ ๋ญ ๋น ํธ๋ฆฐ๊ฒ ์์๊น์? ์๋๋ฉด ๋ค๋ฅธ ํ์ผ๋ค์์ ์ถ๊ฐ์ ์ผ๋ก ํด์ฃผ์ด์ผ ํ๋ ์ผ์ด ์๋๊ฑด๊ฐ์? ์ฃผ๋ง์ ์ง๋ฌธ๋๋ ค์ ์ฃ์กํฉ๋๋ค. ํธ์ํ ์ฃผ๋ง๋์ธ์^^
- 0
- 5
- 3K
Q&A
Nuxt ์ babel polyfill ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํฉ๋๋ค.
๋ฆ์ ์๊ฐ์ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! ๋ต๋ณ๋ณด๊ณ ์ด๊ฒ์ ๊ฒ ํด๋ดค๋๋ฐ ์ ํํ๋ ์ ์ ์์ง๋ง ์๋ฌด๋๋ ์ง์ํ๊ธฐ๋ก Promise๊ฐ ๋ฌธ์ ์ธ๊ฒ ๊ฐ์๋ฐ npm install es6-promise ์ค์นํ๊ณ nuxt.config.js ํ์ผ์ bulid: { transfile: ['es-promise'] } ์ฒ๋ฆฌํ๋๋ฐ ๋น๋ 100%์ฏค ๋์ IE์์ 'Promise'๊ฐ ์ ์๋์ง ์์์ต๋๋ค. ๋ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค์. ํน์ ๋ญ ๋ ์ถ๊ฐํด ์ฃผ์ด์ผ ํ๋๊ฒ ์์๊น์?
- 0
- 5
- 3K
Q&A
ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ๊ฐ์ ํจ์๋ฅผ mounted() ์์์ ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
๋งค๋ฒ ๊ฐ์ฌํฉ๋๋ค^^
- 0
- 4
- 1.9K
Q&A
ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ๊ฐ์ ํจ์๋ฅผ mounted() ์์์ ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
์~ ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋ ๋์๋ง ์ฃผ์๋ฅผ ์ฝ์ด์ ํน์ ํจ์(์ฃผ์์ ํน์ ๋ ธ๋๋ค์ ๊ฐ ๋น๊ต)๋ฅผ ํ๋ฒ๋ง ์คํํ๊ณ ์ถ์์ต๋๋ค. ๋ ธ๋์ ๊ฐ๊ณผ ๋น๊ตํ๋ ค๋ mounted ์ ์ ์ฉํ๋ ค ํ์ต๋๋ค. ์ผ๋จ default ๋ ์ด์์์ watch์ $route(to, from) {...} ํํ๋ก ํ๋ ๋๊ธด ํ๋๋ฐ ๋ง๋ ๋ชจ๋ฅด๊ฒ ๋ค์. ๋ค์ ํ์ธํด๋ณด๋ watch์ ๋ฃ์ผ๋ฉด ์๋ก๊ณ ์นจ ์์๋ ์๋์ ์ํ๋ค์.;;;
- 0
- 4
- 1.9K
Q&A
Nuxt js ๊ฐ์๋ ์์ ์ ์๋์?
์น์ ํ ๋ต๋ณ๊ณผ ๋งํฌ ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 339
Q&A
๋ฐฑ์๋๊ฐ ์๋ฐ์ผ๋ ๋ก๊ทธ์ธ ์ ์ง๊ด๋ จ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์~ ๊ทธ๋ ๊ตฐ์. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 4
- 716
Q&A
๋ฐฑ์๋๊ฐ ์๋ฐ์ผ๋ ๋ก๊ทธ์ธ ์ ์ง๊ด๋ จ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ํ๊ฐ์ง๋ง ๋ ์ง๋ฌธ๋๋ฆฝ๋๋ค. ์ ๊ฐ ๊ฐ์ข์์ ๋์น๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ... ๋ก๊ทธ์ธ ์ ์งํ ๋ ํ๋ก ํธ์ชฝ์์ nuxtServerInit() ์ค์ ์ผ๋ก ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ์ธํ ํ๋๊ฒ๋ง ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ๋ก ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ๋ ์๋ฒ์์๋ ์ด ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ๋ ์ธ์ฆ์ฌ์ฉ์์ธ์ง ์ด๋ป๊ฒ ํ๋จํ๋๊ฑฐ์ฃ ? ํ๋ก ํธ์์ ์๋ฒ๋ก ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ๋๋ง๋ค ์ธ์ ์์ด๋๋ ํ ํฐ๊ฐ์ ํค๋์ ์ซ์ด์ ๋ณด๋ด๋ฉด ์๋ฒ๊ฐ ์ด ํ ํฐ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋น๊ตํด์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ก ํ๋จํด์ ์๋ต์ ์ฃผ๋๊ฑฐ ์๋๊ฐ์? ์ ๊ฐ ๋ค๋ฅธ ๋ทฐ๊ฐ์ข(Nuxt ์ฌ์ฉ์ํจ) ๋ดค์๋๋ ์๋ฒ์์ ๋ฐ๊ธํ ํ ํฐ์ ํ๋ก ํธ์์ ์ฟ ํค์ ์ ์ฅ -> ํ๋ก ํธ์์ ํ์ด์ง ํธ์ถ๋ ๋๋ง๋ค ์ ์ฅ๋ ์ฟ ํค์ ํ ํฐ ์ ๋ณด๋ฅผ ๋ค์ state์ ์ ์ฅ -> ์๋ฒ๋ก ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ผ๋๋ง๋ค state ์ ํ ํฐ์ axios ์ธํฐ์ ํฐ๋ก ํค๋์ ์ค์ด์ ์๋ฒ์ ๋ฆฌํ์คํธ ๋ณด๋ -> ์๋ฒ์์ ํ ํฐ์ผ๋ก ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์ ํ๋จ ํ ์๋ต ์ด๋ฐ ๋ฐฉ์์ด์๋๋ฐ์... ํน์ ์ด ๊ฐ์ข์์๋ ์ฟ ํค์ ๋ณด๋ฅผ ๋ฐฑ์๋์์ ์ง์ ์ ์ฅํ๊ณ ๊ฐ์ ธ๊ฐ๊ณ ํ๋๊ฑด๊ฐ์? ํ์ฌ ๊ธฐ๋ฅ๊ตฌํ 5-6๊น์ง๋ฐ์ ๋ชป๋ณด๊ธด ํ๋๋ฐ ์ด๋ฐ ๋ถ๋ถ์ ์ ๊ฐ ๋์น๊ฑด์ง ์์ง ๋ชป๋ณธ๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋ค์. ์ฒ์ ๋ฐฐ์์ ๋น์ฅ ํ๋ก์ ํธ๋ฅผ ํด์ผํ๋ ๋ง์์ด ๊ธํด์ ๊ฐ์ข๋ ๋ค ๋ณด๊ธฐ ์ ์ ์๊พธ ์ง๋ฌธ๋๋ ค์ ์ฃ์กํ๋ค์.;;;
- 0
- 4
- 716