簡記: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'
留言