簡記:node.js v20中設定typescript與.env


pnpm init

pnpm add -D typescript @types/node


src/index.ts

async function main(...args: string[]) {
console.debug('process.env.NODE_ENV=',
process.env.NODE_ENV
)
console.debug('process.env.STORAGE_BUCKET_NAME=',
process.env.STORAGE_BUCKET_NAME
)
}

const args = process.argv.slice(2);
main(...args).catch(console.error);


package.json

"type": "commonjs",
"scripts": {
"build": "tsc",
"dev": "pnpm run build && node --env-file=.env.development.local .",
"start": "pnpm run build && node --env-file=.env.production.local ."
},


tsconfig.json

"compilerOptions": {
"module": "CommonJS",
"moduleResolution": "Node",
"outDir": "dist",
"rootDir": "src"

這個設定的優點是import不需要寫.js, 缺點就是沒有top-level await


env.d.ts

declare namespace NodeJS {
interface ProcessEnv {
NODE_ENV: 'development' | 'production' | 'test';
STORAGE_BUCKET_NAME: string;
}
}


.env.development.local

STORAGE_BUCKET_NAME=test-bucket
NODE_ENV='development'

留言