NextJS - DotENV 제거
7620 단어 nextjsconftypescriptdotenv
구현
참고로 우리는 NextJS Typescript zero configuration 설정을 사용합니다.
npx create-next-app@latest --ts
# or
yarn create next-app --typescript
먼저 필요한 npm 패키지를 설치해야 합니다.
npm install config @types/config
이제 구성 디렉토리와 구성 파일을 만듭니다. default.yaml은 나중에 유형 템플릿으로 사용됩니다.
config
- default.yaml
- development.yaml
- production.yaml
NextJS는 구성 파일에서 environment variables을 정의할 수 있습니다. 이를 최대한 활용하기 위해 구성 패키지를 가져오고 config.util.toObject()를 사용하여 환경 변수를 구성 변수로 설정합니다. 기본적으로 NextJS는 루트 디렉토리에 next.config.js 파일을 생성합니다. 확장자를 .mjs로 변경하고 내용을 다음으로 바꿉니다.
// next.config.mjs
import config from 'config';
const nextConfig = {
reactStrictMode: true,
env: config.util.toObject()
}
이 시점에서 우리는 이미 .env 파일을 교체했습니다. NextJS는 해당 활성 환경과 함께 구성 폴더에서 구성 파일을 로드합니다.
TypeScript와 함께 사용하려면 몇 가지 추가 작업을 수행해야 합니다. 먼저 구성 변수에 대한 유형 선언 파일이 필요합니다. 그런 다음 글로벌 프로세스 환경에 추가해야 합니다.
여기서부터는 더 나은 추적성을 위해 예제를 사용하여 작업할 것입니다.
default.yaml 파일에 몇 가지 항목을 추가해 보겠습니다.
firebase:
apiKey: apiKey
appId: appId
projectId: projectId
authDomain: authDomain
databaseURL: databaseURL
storageBucket: storageBucket
messagingSenderId: messagingSenderId
measurementId: measurementId
다음으로 typescript에 구성 변수를 반영해야 합니다. 제 모국어로 이런 말이 있습니다.
Viele Wege führen nach Rom
요컨대 문제에 대한 많은 솔루션이 있음을 의미합니다. 예를 들어 수동으로 수행하거나 웹 기반yaml to typescript 변환기를 사용할 수 있습니다. 불행히도 이 문제에 대한 npm 패키지를 찾을 수 없습니다. 그러나 많은 사람들이 알고 있듯이 10시간 안에 자동화할 수 있는 작업을 왜 10분 안에 처리해야 할까요? 따라서 추가 패키지를 설치해 보겠습니다.
npm install -D ymlts
이제 콘솔에서 구성 파일을 TypeScript로 변환할 수 있습니다. 다음 명령으로 필요한 유형 파일을 만듭니다.
npx ymlts config/default @types/config
그러면 @types 디렉토리에 config.d.ts가 생성됩니다. 내용은 다음과 같아야 합니다.
// @types/config.d.ts
interface Config {
firebase: Firebase;
}
interface Firebase {
apiKey: string;
appId: string;
projectId: string;
authDomain: string;
databaseURL: string;
storageBucket: string;
messagingSenderId: string;
measurementId: string;
}
마지막으로 프로세스 환경에 새 구성 유형을 추가해야 합니다. 이를 위해 @types 디렉토리에 global.d.ts 파일을 생성합니다...
@types
- global.d.ts
...구성 유형으로 프로세스 환경을 확장합니다.
// @types/global.d.ts
namespace NodeJS {
interface ProcessEnv extends Config { }
}
나중에 사용할 수 있도록 정말 게으른 경우: ymlts 명령을 package.json에 추가하고 npm run env로 시작할 수 있습니다.
// package.json
"scripts": {
"env": "npx ymlts config/default @types/config",
}
결론
왜? 언뜻 보기에 이것은 불필요한 작업처럼 보이지만 몇 가지 깔끔한 작업이 있습니다!
initializeApp(process.env.firebase);
로 Firebase 앱을 초기화할 수 있습니다. Reference
이 문제에 관하여(NextJS - DotENV 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lacocoroco/nextjs-get-rid-of-dotenv-5gol텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)