unplugin-typedotenv
Version:
typedotenv plugin for webpack/vite (dotenv utility for TypeScript)
51 lines (47 loc) • 1.93 kB
JavaScript
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;
;