UNPKG

unplugin-typedotenv

Version:

typedotenv plugin for webpack/vite (dotenv utility for TypeScript)

51 lines (47 loc) 1.93 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/index.ts var _path = require('path'); var path = _interopRequireWildcard(_path); var _core = require('@typedotenv/core'); var _promises = require('fs/promises'); var fs = _interopRequireWildcard(_promises); var _unplugin = require('unplugin'); var resolveDotenv = ({ env, envDir, envFile }) => { if (envFile) return envFile; const dir = _nullishCoalesce(envDir, () => ( process.cwd())); const file = env ? `.env.${env}` : ".env"; return path.join(dir, file); }; var name = "unplugin-typedotenv"; var src_default = _unplugin.createUnplugin.call(void 0, (options) => { const envfile = resolveDotenv(options); const { output = "env.ts" } = options; const generateCode = async () => { try { const [dotenv, previous] = await Promise.all([ fs.readFile(envfile, "utf8"), fs.readFile(output, "utf8").catch(() => { }) ]); const code = _core.generate.call(void 0, dotenv, options); if ((previous == null ? void 0 : previous.replace(/[ \n\r\t]+/g, " ")) !== code.replace(/[ \n\r\t]+/g, " ")) { await fs.writeFile(output, code); } return { code }; } catch (e) { console.error(`[${name}]`, e); return null; } }; return { name, async buildStart() { this.addWatchFile(envfile); await generateCode(); }, async watchChange(id) { if (id !== envfile) return; await generateCode(); } }; }); exports.src_default = src_default;