Socket
Socket
Sign inDemoInstall

@37bytes/vite-dynamic-environments

Package Overview
Dependencies
182
Maintainers
7
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.2 to 0.0.3

4

build/index.d.ts

@@ -7,6 +7,6 @@ import { Plugin } from 'vite';

dynamicEnvironmentsDir?: string;
outputDir?: string;
envOutputDir?: string;
}
declare const dynamicEnvironmentsSupport: ({ scriptLink, ignorePrefixes, dynamicEnvironmentsDir, outputDir }?: Params) => Plugin;
declare const dynamicEnvironmentsSupport: ({ scriptLink, ignorePrefixes, dynamicEnvironmentsDir, envOutputDir }?: Params) => Plugin;
export { dynamicEnvironmentsSupport as default };

@@ -111,4 +111,10 @@ import { createRequire } from 'module';const require = createRequire(import.meta.url)

import { resolve, join } from "node:path";
import { createLogger } from "vite";
var logger = createLogger("info", { prefix: "[dynamicEnvironmentsSupport]" });
var { FORCE_ENVIRONMENT } = process.env;
var getLast = (array) => array[array.length - 1];
var getDynamicEnvironment = ({ path, ignorePrefixes }) => {
var getDynamicEnvironment = ({ path, ignorePrefixes = [] }) => {
if (!existsSync(path)) {
throw new Error(`File does not exist (${path})`);
}
const config = import_dotenv.default.parse(readFileSync(path));

@@ -120,5 +126,3 @@ const dynamicEnvironment = Object.fromEntries(

};
var generateScript = (environment) => `
window.dynamicEnvironment = Object.freeze(${JSON.stringify(environment)});
`;
var generateScript = (environment) => `window.dynamicEnvironment = Object.freeze(${JSON.stringify(environment)});`;
var DEFAULT_SCRIPT_LINK = "/dynamicEnvironment.js";

@@ -131,53 +135,81 @@ var DEFAULT_DYNAMIC_ENVIRONMENTS_DIR = resolve(process.cwd(), "environments/dynamic");

dynamicEnvironmentsDir = DEFAULT_DYNAMIC_ENVIRONMENTS_DIR,
outputDir = DEFAULT_OUTPUT_DIR
} = {}) => ({
name: "@37bytes/vite-dynamic-environments",
// режим разработки
configureServer(server) {
server.middlewares.use(scriptLink, (request, response) => {
const dynamicEnvironment = getDynamicEnvironment({
ignorePrefixes,
path: resolve(process.cwd(), ".env.development")
envOutputDir = DEFAULT_OUTPUT_DIR
} = {}) => {
let outDir;
let envDir;
let envConfig;
let forceEnvironmentScriptContent;
return {
name: "@37bytes/vite-dynamic-environments",
config: (config, nextEnvConfig) => {
outDir = config.build?.outDir ?? "dist";
envConfig = nextEnvConfig;
if (config.envDir) {
envDir = resolve(process.cwd(), config.envDir);
} else {
envDir = process.cwd();
}
},
// режим разработки
configureServer(server) {
server.middlewares.use(scriptLink, (request, response) => {
if (!envDir) {
throw new Error("envDir is falsy");
}
const dynamicEnvironment = getDynamicEnvironment({
ignorePrefixes,
path: resolve(envDir, `.env.${envConfig.mode}`)
});
response.writeHead(200, { "Content-Type": "application/json" });
response.end(generateScript(dynamicEnvironment));
});
response.writeHead(200, { "Content-Type": "application/json" });
response.end(generateScript(dynamicEnvironment));
});
},
// очистка outputDir
buildStart: () => {
rmSync(outputDir, { recursive: true, force: true });
},
// генерация .js для каждого динамического окружения
buildEnd: () => {
const fullPathToDynamicEnvironments = resolve(process.cwd(), dynamicEnvironmentsDir);
readdirSync(fullPathToDynamicEnvironments).forEach((fileName) => {
if (!fileName.startsWith(".env.")) {
return;
},
// очистка outputDir
buildStart: () => {
rmSync(envOutputDir, { recursive: true, force: true });
},
// генерация .js для каждого динамического окружения
buildEnd: () => {
const fullPathToDynamicEnvironments = resolve(process.cwd(), dynamicEnvironmentsDir);
readdirSync(fullPathToDynamicEnvironments).forEach((fileName) => {
if (!fileName.startsWith(".env.")) {
return;
}
const fullPathToFile = join(fullPathToDynamicEnvironments, fileName);
if (statSync(fullPathToFile).isDirectory()) {
return;
}
const environmentName = getLast(fileName.split("."));
const dynamicEnvironment = getDynamicEnvironment({
ignorePrefixes,
path: fullPathToFile
});
if (!existsSync(envOutputDir)) {
mkdirSync(envOutputDir, { recursive: true });
}
const scriptContent = generateScript(dynamicEnvironment);
writeFileSync(join(envOutputDir, `dynamicEnvironment.${environmentName}.js`), scriptContent);
if (FORCE_ENVIRONMENT === environmentName) {
logger.info(
`process.env.FORCE_ENVIRONMENT defined! preparing dynamicEnvironment.js for "${environmentName}"...`
);
forceEnvironmentScriptContent = scriptContent;
}
});
},
// автоматическое добавление скрипта в html
transformIndexHtml: (html) => {
if (!html.includes("<head>")) {
throw new Error("dynamicEnvironmentsPlugin: '<head>' not found in html");
}
const fullPathToFile = join(fullPathToDynamicEnvironments, fileName);
if (statSync(fullPathToFile).isDirectory()) {
return;
return html.replace("<head>", `<head><script src='${scriptLink}'></script>`);
},
writeBundle: () => {
if (forceEnvironmentScriptContent) {
logger.info(`writing prepared dynamicEnvironment.js in "${outDir}"...`);
writeFileSync(join(resolve(outDir, "dynamicEnvironment.js")), forceEnvironmentScriptContent);
}
const environmentName = getLast(fileName.split("."));
const dynamicEnvironment = getDynamicEnvironment({
ignorePrefixes,
path: fullPathToFile
});
if (!existsSync(outputDir)) {
mkdirSync(outputDir, { recursive: true });
}
writeFileSync(
join(outputDir, `dynamicEnvironment.${environmentName}.js`),
generateScript(dynamicEnvironment)
);
});
},
// автоматическое добавление скрипта в html
transformIndexHtml: (html) => {
if (!html.includes("<head>")) {
throw new Error("dynamicEnvironmentsPlugin: '<head>' not found in html");
}
return html.replace("<head>", `<head><script src="${scriptLink}"></script>`);
}
});
};
};
var dynamicEnvironmentsSupport_default = dynamicEnvironmentsSupport;

@@ -184,0 +216,0 @@

{
"name": "@37bytes/vite-dynamic-environments",
"version": "0.0.2",
"version": "0.0.3",
"description": "Vite plugin for generating dynamic JavaScript files for each environment, allowing seamless integration and management of environment-specific configurations.",

@@ -5,0 +5,0 @@ "license": "MIT",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc