dotenv mono

2025-12-11 0 569

dotenv mono

如果这个项目为您提供了帮助,请为我们提供明星?

描述

这是什么?

为了防止代码重复并增强可重复使用性,包括所有环境变量在内的集中配置可能很方便。而不是为每个软件包生成.env文件,我们可以在项目的根部使用一个.env文件。

这是一个允许MonorePo应用程序和软件包共享和加载集中式dotenv的软件包。它基于dotenv软件包。

它还包括一些额外的功能,例如操纵和节省Dotenv文件的更改,默认的集中文件以及具有订购和优先级的文件加载程序。

默认情况下启用了插件dotenv-expand。

结构示例
├── .env
├── .env.production
├── .env.defaults
├── packages
│   ├── ui-library
│   ├── other-library
├── apps
│   ├── web
│   │   ├── .storybook
│   ├── docs

它如何工作?

包装搜索第一个.ENV文件,与某些优先级标准匹配,通过行走parent the Parent Directories。

优先事项

从当前的流程目录开始,该软件包找到了第一个文件,该文件匹配了最优先级的最佳文件程序和文件名标准。 UP文件夹的深度越大,其优先级就越少。

可以在使用优先属性属性的配置上自定义优先级,请参见以下示例。

注意:NODE_ENV的允许值通常是测试,开发和生产。

优先事项 文件名
75 .env。$(node_env).local
50 .env.Local
25 .env。$(node_env)
1 .env
例子

给定以下文件夹结构,并带有DotEnv文件:

├── .env
├── .env.production
├── apps
│   ├── .env.development
│   ├── web
│   ├── docs
│   │   ├── .env
│   │   ├── .env.local

有以下优先顺序:

小路 优先事项 深度
.env 1 2
.env.生产 25 2
应用/.env.开发 25 1
应用/文档/.env 1 0
apps/docs/.env.local 50 0

然后,我们将有以下结果方案:

当前的工作目录 env 匹配
/ 发展 .env
/ 生产 .env.生产
应用/网络 发展 .env
应用/网络 发展 应用/.env.开发
应用/文档 发展 apps/docs/.env.local

安装

从NPM或YARN安装库,只是运行以下命令行之一:

NPM
NPM安装dotenv-mono-保存 纱线添加dotenv-mono

在Next.js上安装

对于next.js的自定义高级配置,您可以在项目目录的根(package.json旁边)中创建next.config.js或next.config.mjs文件。

在文件顶部添加以下行:

 require ( \"dotenv-mono\" ) . load ( ) ; 
例子
 require ( \"dotenv-mono\" ) . load ( ) ;

/**
 * @type { import(\'next\').NextConfig }
 */
const nextConfig = {
	/* config options here */
} ;

module . exports = nextConfig ;

在故事书上安装

主配置文件是.storybook/main.js。该文件控制Storybook服务器的行为,因此您必须在更改它时重新启动Storybook的过程。

在文件上添加以下几行:

 const dotenv = require ( \"dotenv-mono\" ) . load ( ) ;

const config = {
	/* config options here */
	env : ( config ) => {
		return {
			... config ,
			... dotenv . env ,
		} ;
	} ,
} ;

module . exports = config ; 

用法

加载

将环境变量从dotenv导出到工作过程中的简单方法。以下是基于您的偏好的几种潜在实施方法。

 // Inline
require ( \"dotenv-mono\" ) . load ( /* config */ ) ;

// Using the function
const { dotenvLoad } = require ( \"dotenv-mono\" ) ;
dotenvLoad ( /* config */ ) ;

// Using import
import { dotenvLoad } from \"dotenv-mono\" ;
const dotenv = dotenvLoad ( ) ; // Dotenv instance

// Using the class
const { Dotenv } = require ( \"dotenv-mono\" ) ;
const dotenv = new Dotenv ( /* config */ ) ;
dotenv . load ( ) ; 

具有dotenv输出

如果您需要一种快速的方法将Dotenv软件包替换为Dotenv-Mono ,并且还需要具有复古兼容的功能,则可以使用Config方法直接将其直接备份到DOTENV软件包之类的输出。

 // Inline
const output = require ( \"dotenv-mono\" ) . config ( /* config */ ) ;

// Using the function
const { dotenvConfig } = require ( \"dotenv-mono\" ) ;
const output = dotenvConfig ( /* config */ ) ;

带有扩展名的加载文件

 // Use `.dotenv.server` or `.dotenv.server.local`, etc...
load ( { extension : \"server\" } ) ;

加载特定的文件

 // You can specify the file path
load ( { path : \"../../configs/.env\" } ) ;

没有Dotenv-Expand扩展

 load ( { expand : false } ) ;

更改默认文件名

 load ( { defaults : \".env.def\" } ) ;

更改优先级

 // If `.dotenv.overwrite` is present use it with max priority
load ( {
	priorities : {
		\".env.overwrite\" : 100 ,
	} ,
} ) ;

进行更改

 const dotenv = require ( \"dotenv-mono\" ) . load ( ) ;
dotenv . save ( { \"MY_ENV_1\" : \"enjoy\" } ) ;

// Without loading into the working process
const { Dotenv } = require ( \"dotenv-mono\" ) ;
const dotenv = new Dotenv ( ) ;
dotenv . loadFile ( ) ; // Skip loading into the process
dotenv . save ( {
	\"MY_ENV_1\" : \"enjoy\" ,
	\"MY_ENV_2\" : \"\'enjoy quotes\'\" ,
	\"MY_ENV_3\" : 999 ,
} ) ;

预付

就像在CLI/控制台上的DotEnv软件包上一样,您可以使用-require(-r)命令行选项来预加载dotenv。通过这样做,您无需在应用程序代码中要求并加载DotEnv。

$ node -r dotenv-mono/load your_script.js

下面的配置选项以格式Dotenv_config_ <选项> = value的命令行参数支持。

$ node -r dotenv-mono/load your_script.js dotenv_config_path=/custom/path/to/.env dotenv_config_debug=true

此外,您可以使用环境变量来设置配置选项。命令行参数将在这些之前。

$ DOTENV_CONFIG_ < OPTION > =value node -r dotenv-mono/load your_script.js
$ DOTENV_CONFIG_ENCODING=latin1 DOTENV_CONFIG_DEBUG=true node -r dotenv-mono/load your_script.js dotenv_config_path=/custom/path/to/.env

CLI

您可以将Dotenv-Mono用作命令行工具来运行使用.ENV文件加载的环境变量的命令。这类似于dotenv-cli,但具有Dotenv-Mono的所有增强功能。

 # Basic usage - load .env and run a command
dotenv-mono -- node your_script.js

# Load specific .env file
dotenv-mono -e .env.production -- node your_script.js

# Load multiple .env files
dotenv-mono -e .env.local -e .env.production -- node your_script.js

# Set additional variables
dotenv-mono -v NODE_ENV=production -v DEBUG=true -- node your_script.js

# Print a variable value
dotenv-mono -p NODE_ENV

# Debug mode - see what files would be loaded
dotenv-mono --debug -e .env.production

# Use all dotenv-mono features
dotenv-mono --cwd /path/to/project --extension server --depth 3 -- node server.js

CLI选项

选项 描述
– 帮助 打印帮助消息
– 调试 输出要处理的文件,但实际上没有解析或运行命令
-e <Path> 将文件<路径>解析为.env文件,然后在环境中添加变量(多个允许)
-v <Name> = <value> 使用<value>将变量<名称>放入环境中(多个允许)
-p <varible> <variable>的打印值向控制台
– 不扩散 跳过变量扩展
– 跨越 覆盖系统变量
-CWD <Path> 指定当前的工作目录
– 深度<数字> 指定找到文件夹树时达到的最大深度
– 编码<enc> 指定包含环境变量的文件的编码
– Extension <Ext> 指定以加载仅在特定应用/软件包上使用的特定dotenv文件
– 默认<文件> 指定Dotenv文件名
– 优先级<json> 指定文件名优先级的标准,以加载为dotenv文件

方法

config

环境 描述 默认
CWD 指定当前的工作目录 process.cwd()
调试 打开/关闭日志记录以帮助调试为什么未设置某些键或值 错误的
默认值 指定默认值dotenv文件名(它不能覆盖任何环境变量) .env.defaults
深度 指定最大深度以从儿童目录中找到文件夹 4
编码 指定包含环境变量的文件的编码 UTF8
扩张 打开/关闭Dotenv-Expand插件 真的
扩大 指定以加载仅在特定应用/软件包上使用的特定dotenv文件(ex .env.server …)
覆盖 覆盖机器上已经设置了带有.env文件值的所有环境变量 错误的
小路 如果包含环境变量的文件位于其他地方,则指定自定义路径
优先事项 指定文件名优先级的标准,以加载为dotenv文件 请参阅优先级

dotenv方法

负载环境

它将按照标准读取您的.env文件,解析内容,将其分配给process.env。

注意:此方法与以前的加载函数不同。因为它要求通过构造函数在类实例上加载配置。

public load(loadOnProcess: boolean): Dotenv;

加载文件

它将按照标准读取您的.env文件,解析内容,准备以编程方式读取或更改。

public loadFile(): Dotenv;

节省

将输入的数据与加载或LoadFile的加载数据合并,并保存原始Dotenv文件上的更改。

注意:如果存在.env.defaults,则不会被覆盖,您可以将更改保存在主dotenv文件上(.env,.env.local等…)

public save(changes: Record<string, any>): Dotenv;

解析

在此处查看dotenv文档

public parse<T extends Record<string, any> = Record<string, any>>(src: string | Buffer): T;

?如何贡献

有一个主意吗?找到一个错误?请提出问题或提取请求。欢迎捐款,并非常感谢!每一点都有帮助,并且将永远给予信用。

下载源码

通过命令行克隆项目:

git clone https://github.com/marcocesarato/dotenv-mono.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 dotenv mono https://www.zuozi.net/35100.html

Nabla TypeMath android
上一篇: Nabla TypeMath android
Newtrodit
下一篇: Newtrodit
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务