@kokamvd/esbuild-envfile-plugin
Version:
esbuild plugin to load a .env file from the current directory or any parent. It will combine the environment variables with existing/system-wide process.env variables.
51 lines (45 loc) • 1.52 kB
JavaScript
//const envFilePlugin = require('esbuild-envfile-plugin');
const envFilePlugin = require('../index.js'); // use for "live" testing :)
const dotenv = require('dotenv');
const path = require('path');
const { getNormalizedEnvDefines } = require('./utils');
// Config: relative to where npm command is run:
const APP_BASE = './src';
const ENTRY_FILE = 'index.js';
const OUTPUT_DIR = 'build';
const OUTPUT_FILE = 'app.js';
const TARGET = 'es2020';
// try to use dotenv to load in custom local env vars to existing node runtime env vars:
const envFile = process.env.NODE_ENV
? `.env.${process.env.NODE_ENV}`
: '.env.local';
dotenv.config({ path: envFile });
// collect all new env vars wrapped in quotes for passage to build define
const { define } = getNormalizedEnvDefines();
function build(entryFile, outFile) {
console.log('build() ', entryFile, '=>', outFile);
require('esbuild')
.build({
entryPoints: [path.resolve(entryFile)],
outfile: path.resolve(outFile),
platform: 'node',
bundle: true,
target: TARGET,
logLevel: 'silent',
plugins: [
envFilePlugin({
includeSystemProcessEnv: false,
filterByPrefix: null,
}),
],
define,
})
.then((r) => {
console.log('Build succeeded.');
})
.catch((e) => {
console.log('Error building:', e.message);
process.exit(1);
});
}
build(`${APP_BASE}/${ENTRY_FILE}`, `${OUTPUT_DIR}/${OUTPUT_FILE}`);