반응형

Nuxt3 프로젝트 개발 및 운영 모드 포트번호 설정 방법입니다.

 

 

1. 개발 모드

/package.json 파일 설정 (default port 는 3000)

 

{
  "private": true,
  "scripts": {
    "dev": "nuxi dev --port 3001",
    "build": "nuxi build",
    "start": "node .output/server/index.mjs"
  },
  "devDependencies": {
    "nuxt3": "latest"
  }
}

 

2. 운영 모드

/package.json 파일 설정 (default port 는 3000)

 

{
  "private": true,
  "scripts": {
    "dev": "nuxi dev",
    "build": "nuxi build",
    "start": "PORT=3333 node .output/server/index.mjs"
  },
  "devDependencies": {
    "nuxt3": "latest"
  }
}

 

직접 수정 방식 (권장하지 않음)

/.output/server/chunks/nitro/node-server.mjs(361행)

/.output 디렉토리는 Nuxt 애플리케이션을 운영모드로 빌드할 때 생성됩니다.

 

const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3;

=>

const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3333;

 

 

 

참고 문서:

https://v3.nuxtjs.org/api/commands/dev/

 

nuxi dev

- Website: https://v3.nuxtjs.org/ - Setup and Contribution Guide: https://v3.nuxtjs.org/community/contribution#documentation-guide

v3.nuxtjs.org

https://v3.nuxtjs.org/guide/deploy/node-server/#configuring-defaults-at-runtime

 

Node.js Server

Discover the Node.js server preset with Nitro to deploy on any Node hosting.

v3.nuxtjs.org

 

 

오늘도 좋은 하루 보내세요.

감사합니다.

반응형

'Nuxt3 > 정리' 카테고리의 다른 글

#1 Head Management  (0) 2022.04.28
반응형

Nuxt3은 기본적으로 charset 및 viewport 등 다양한 메타 태그를 지원하고 있습니다.

필요할 경우 커스터마이징 할 수 있을 뿐만 아니라 여러 가지 방법으로 다른 메타 태그들을 지정할 수 있습니다.

메타 태그들은 다음 세 가지 방식으로 설정할 수 있습니다.

 

 

  1. useHead Composable을 사용하는 방식
  2. Meta 컴포넌트를 사용하는 방식
  3. nuxt.config.ts 설정 방식

 

 

1. useHead Composable을 사용하는 방식

setup 함수 안에 useHead Composable을 사용하여 다양한 메타 태그를 호출할 수 있습니다.

또한 reactive한 메타데이터에 대한 개체를 반환하는 함수를 전달할 수도 있습니다.

 

다음은 동적으로 Meta 데이터를 설정하는 방법입니다.

<script setup> 에서 Route를 이용하여 매개변수를 받고

viewProduct 함수를 호출합니다. (하단에 다른 파일에 모듈화된 viewProduct 함수가 있습니다.)

함수를 통해 받아온 data 를 useHead Composable을 통해 동적으로 적용합니다.

 

<script setup>
import {useHead, useRoute} from "nuxt3/app";
import {viewProduct} from "../../useFetch";

const route = useRoute()

const { data } = await viewProduct(route.params.productId)

useHead({
  meta: [
    { name: '상품이름', content: JSON.stringify(data.value.name) },
    { name: '상품내용', content: JSON.stringify(data.value) },
    { name: '상품등록일', content: JSON.stringify(data.value.registerDate) }
  ]
})

</script>

 

viewProduct 함수

function viewProduct(data) {
    const url = baseURL+'product/'+data
    return useAsyncData('product', () => $fetch(url))
}
 

페이지 호출 시 다음과 같은 메타 데이터를 확인할 수 있습니다.

<head >
  <meta name="상품이름" content="&quot;과자&quot;">
  <meta name="상품내용" content="{&quot;productId&quot;:5,&quot;name&quot;:&quot;과자&quot;,&quot;price&quot;:1000,&quot;content&quot;:&quot;달달한 과자&quot;,&quot;stock&quot;:100,&quot;categoryId&quot;:1000,&quot;registerDate&quot;:&quot;2022-04-21T09:36:50.572317&quot;}">
  <meta name="상품등록일" content="&quot;2022-04-21T09:36:50.572317&quot;">
</head>

 

 

2. Meta 컴포넌트를 사용하는 방식

Nuxt는 메타데이터를 조작할 수 있게 다음 컴포넌트를 제공합니다.

이 컴포넌트 이름은 HTML의 기본적인 element와 일치하므로 템플릿에서 대문자로 시작해서 차이를 주는게 중요합니다.

<Title> <Base> <Script> <Style> <Meta> <Link> <Body> <Html> <Head>

 

다음은 동적으로 Meta 데이터를 설정하는 방법입니다.

<script setup> 에서 Route를 이용하여 매개변수를 받고

viewProduct 함수를 호출합니다. (하단에 다른 파일에 모듈화된 viewProduct 함수가 있습니다.)

 

<script setup>
import {useRoute} from "nuxt3/app";
import {viewProduct} from "../../useFetch";

const route = useRoute()

const { data } = await viewProduct(route.params.productId)

</script>

 

viewProduct 함수

function viewProduct(data) {
    const url = baseURL+'product/'+data
    return useFetch(url);
}

 

받아온 데이터를 Meta 컴포넌트에 동적으로 적용합니다.

    <Head>
      <Title>titleHeadTest</Title>
        <Meta name="productId" :content='JSON.stringify(data.productId)'/>
        <Meta name="productName" :content='data.name'/>
        <Meta name="productPrice" :content='JSON.stringify(data.price)'/>
        <Meta name="productContent" :content='data.content'/>
        <Meta name="productStock" :content='JSON.stringify(data.stock)'/>
        <Meta name="productCategoryId" :content='JSON.stringify(data.categoryId)'/>
        <Meta name="productRegisterDate" :content='data.registerDate'/>
    </Head>

 

페이지 호출 시 다음과 같은 메타 데이터를 확인할 수 있습니다.

<!DOCTYPE html>
<html  data-head-attrs="">

<head >
  <title>titleHeadTest</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="companyName" content="plateer">
  <meta name="teamName" content="EC1">
  <meta name="projectName" content="nuxt3">
  <meta name="productId" content="5">
  <meta name="productName" content="&quot;과자&quot;">
  <meta name="productPrice" content="1000">
  <meta name="productContent" content="&quot;달달한 과자&quot;">
  <meta name="productStock" content="100">
  <meta name="productCategoryId" content="1000">
  <meta name="productRegisterDate" content="&quot;2022-04-21T09:36:50.572317&quot;">​

 

 

3. nuxt.config.ts 설정 방식

/nuxt.config.ts 파일에 아래와 같이 설정할 수 있습니다.

 
import { defineNuxtConfig } from 'nuxt3'

// https://v3.nuxtjs.org/docs/directory-structure/nuxt.config
export default defineNuxtConfig({
    app: {
        head: {
            meta: [
                { name: 'companyName', content: 'ABCD'},
                { name: 'teamName', content: 'KKK'},
                { name: 'projectName', content: 'Nuxt3'}
            ]
        }
    }
})

 

설정한 메타 데이터를 앱 전역적으로 확인할 수 있습니다.

<head >
 <meta name="companyName" content="ABCD">
 <meta name="teamName" content="KKK">
 <meta name="projectName" content="nuxt3">
</head>

 

참고문서:

https://v3.nuxtjs.org/guide/features/head-management

 

 

이상입니다.

오늘도 좋은 하루 보내세요.

반응형

'Nuxt3 > 정리' 카테고리의 다른 글

#2 포트번호 설정  (0) 2022.04.28

+ Recent posts