Project Icon

dotenv-run

多平台兼容的环境变量管理工具集

dotenv-run是一个环境变量管理工具集,支持从.env文件加载变量并提供多种集成方案。该工具适用于monorepo项目,集成了CLI、Webpack、Rollup、Vite、ESbuild和Angular等多个平台。它支持TypeScript和ESM模块,并具有环境变量前缀过滤功能。dotenv-run为开发者提供了一种管理不同环境配置的简便方法。

dotenv-run

每月下载量

dotenv-run是一系列包的集合,使用dotenv来支持从.env文件加载环境变量,并提供多种集成方式。

使用dotenv-run的一些好处包括:

  • Monorepo ✨:支持包含多个应用程序的monorepo项目。
  • 通用性:支持多种集成,包括CLI、Webpack、Rollup、Vite、ESbuild和Angular。
  • TypeScript:支持TS项目,为process.envimport.meta.env提供类型定义。
  • ESM:支持ESM模块中的process.envimport.meta.env
  • 安全性:支持通过前缀过滤环境变量。

集成方式

集成方式包名状态
CLI@dotenv-run/cli
核心@dotenv-run/core
ESBuild@dotenv-run/esbuild
Rollup@dotenv-run/rollup
Vite@dotenv-run/rollup
Node.js预加载@dotenv-run/load
Angular@ngx-env/builder

快速开始

假设你有以下monorepo结构:

platform
├── apps
│   ├── vite-app
│   ├── ng-app
│   └── esbuild-app
│   │   ├── .env.local # API_BASE=http://localhost:3001
│   │   ├── package.json
│   │   └── webapp.config.mjs
├── libs
│   └── rollup-lib
│       ├── package.json
│       └── rollup.config.mjs
├── .env.dev # API_BASE=https://dev.dotenv.run
├── .env.prod # API_BASE=https://prod.dotenv.run
├── .env # API_USERS=$API_BASE/api/v1/users;API_AUTH=https://$API_BASE/auth
├── nx.json
└── package.json

以及以下dotenv-run选项:

{
  "verbose": true, // 打印调试信息
  "unsecure": true, // 显示环境变量值
  "root": "../..", // 搜索.env文件的根目录
  "environment": "dev", // 要加载的环境(默认:NODE_ENV)
  "files": [".env"], // 要加载的.env文件(默认:.env)
  "prefix": "^API_" // 用于过滤环境变量的前缀(与打包工具一起使用)
}

dotenv-run将搜索并加载位于根工作空间/home/code/platform到应用程序当前工作目录的.env.*文件。

- 根目录:/home/code/platform
- 工作目录:/codes/code/platform/apps/esbuild-app
- 文件:.env
- 环境:dev
- 环境文件:
 ✔ /home/code/platform/apps/esbuild-app/.env.local
 ✔ /home/code/platform/.env.dev
 ✔ /home/code/platform/.env
- 环境变量:API(不安全模式)
 ✔ API_USERS http://localhost:3001/api/v1/users
 ✔ API_AUTH https://localhost:3001/auth

@dotenv-run/cli

@dotenv-run/cli是一个独立的CLI工具,可用于运行脚本。

❯ npx dotenv-run

  用法:dotenv-run [选项] -- <命令>

  选项:
    -v, --verbose [regexp]         显示调试信息
    -u, --unsecure                 显示环境变量值
    -e, --env [environment]        要加载的环境(默认:NODE_ENV)
    -r, --root                     搜索.env文件的根目录
    -f, --file [.env,.secrets]     要加载的.env文件(默认:.env)
    -h, --help                     输出使用信息

  示例:
    dotenv-run -d
    dotenv-run -- npm start
    dotenv-run -r ../.. -f .env,.secrets -- npm start
    dotenv-run -f ../.env,../.env.api -- npm start

@dotenv-run/core

@dotenv-run/core是核心包,可用于从.env文件加载环境变量。

env({
  root: "../..",
  verbose: true,
  prefix: "^API_",
  files: [".env"],
});

@dotenv-run/esbuild

@dotenv-run/esbuild是esbuild的插件,可用于将环境变量注入到应用程序中。

import { dotenvRun } from "@dotenv-run/esbuild";

await build({
  write: false,
  bundle: true,
  entryPoints: [`test/app.js`],
  plugins: [
    dotenvRun({
      verbose: true,
      root: "../../",
      prefix: "^API",
    }),
  ],
});

@ngx-env/builder

@ngx-env/builder是Angular CLI的插件,也是@dotenv-run/esbuild@dotenv-run/webpack的包装器,可用于将环境变量注入到Angular应用程序中。

演示

快速开始

ng add @ngx-env/builder

环境变量应以NG_APP_前缀开头,你可以定义自定义前缀。

NG_APP_VERSION=$npm_package_version
NG_APP_COMMIT=$GITHUB_SHA
NG_APP_ENABLE_SENTRY=false
@Component({
  selector: "app-footer",
  template: `{{ branch }} - {{ commit }}`,
  standalone: true,
})
export class MainComponent {
  branch = import.meta.env.NG_APP_BRANCH_NAME; // 推荐
  commit = process.env.NG_APP_COMMIT; // 已废弃
}
<!-- index.html -->
<head>
  <title>NgApp on %NG_APP_BRANCH_NAME% - %NG_APP_COMMIT%</title>
</head>

可以在angular.json文件的ngxEnv部分传递配置选项给@ngx-env/builder

{
  "builder": "@ngx-env/builder:application",
  "options": {
    "ngxEnv": {
      "verbose": true,
      "root": "../..",
      "prefix": "^NG_APP_"
    }
  }
}

如果你想在运行时更新环境变量,可以使用runtime选项。

你可以在这里找到完整的@ngx-env/builder文档。

@dotenv-run/webpack

@dotenv-run/webpack是webpack的插件,可用于将环境变量注入到应用程序中。

import { DotenvRunPlugin } from "@dotenv-run/webpack";
import path from "path";

const __dirname = path.resolve();

export default {
  entry: "./src/index.js",
  output: {
    filename: "main.js",
    path: path.resolve(__dirname, "dist"),
  },
  plugins: [
    new DotenvRunPlugin(
      { prefix: "^API", verbose: true, root: "../.." },
      __dirname
    ),
  ],
};

@dotenv-run/rollup

@dotenv-run/rollup是rollup的插件,可用于将环境变量注入到应用程序中。

import env from "@dotenv-run/rollup";

export default {
  input: "src/index.js",
  output: {
    file: "dist/index.js",
  },
  plugins: [env({ prefix: "API", verbose: true, root: "../../.." })],
};

致谢

许可证

MIT © Chihab Otmani

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号