TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Show HN: From dotenv to dotenvx – better config management

354 点作者 scottmotte11 个月前

57 条评论

cimnine11 个月前
I think it&#x27;s good advice to not pass secrets through environment variables. Env vars leak a lot. Think php_info, Sentry, java vm dumps, etc. Also, env vars leak into sub-processes if you don&#x27;t pay extra attention. Instead, read secrets from a vault or from a file-system from _inside_ your process. See also [1] (or [2] which discusses [1]). Dotnet does this pretty good with user secrets [3].<p>[1] <a href="https:&#x2F;&#x2F;blog.diogomonica.com&#x2F;2017&#x2F;03&#x2F;27&#x2F;why-you-shouldnt-use-env-variables-for-secret-data&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.diogomonica.com&#x2F;2017&#x2F;03&#x2F;27&#x2F;why-you-shouldnt-use...</a> [2] <a href="https:&#x2F;&#x2F;security.stackexchange.com&#x2F;questions&#x2F;197784&#x2F;is-it-unsafe-to-use-environmental-variables-for-secret-data" rel="nofollow">https:&#x2F;&#x2F;security.stackexchange.com&#x2F;questions&#x2F;197784&#x2F;is-it-un...</a> [3] <a href="https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;aspnet&#x2F;core&#x2F;security&#x2F;app-secrets" rel="nofollow">https:&#x2F;&#x2F;learn.microsoft.com&#x2F;en-us&#x2F;aspnet&#x2F;core&#x2F;security&#x2F;app-s...</a>
评论 #40794845 未加载
评论 #40796872 未加载
评论 #40801340 未加载
评论 #40796860 未加载
neonate11 个月前
<a href="https:&#x2F;&#x2F;github.com&#x2F;dotenvx&#x2F;dotenvx">https:&#x2F;&#x2F;github.com&#x2F;dotenvx&#x2F;dotenvx</a>
评论 #40795340 未加载
sandstrom11 个月前
I&#x27;ve started using Mise for some stuff at work. Haven&#x27;t digged in a lot yet, but looks really promising.<p><a href="https:&#x2F;&#x2F;mise.jdx.dev&#x2F;" rel="nofollow">https:&#x2F;&#x2F;mise.jdx.dev&#x2F;</a><p>It handles task running (wipe local test db, run linting scripts, etc), environment variables and &#x27;virtual environments&#x27;, as well as replacing stuff like asdf, nvm, pyenv and rbenv.<p>Still somewhat early days, tasks are experimental. But looks very promising and the stuff I&#x27;ve tried to far (tasks) works really well.
评论 #40791715 未加载
评论 #40815054 未加载
评论 #40798695 未加载
评论 #40799504 未加载
评论 #40795013 未加载
treflop11 个月前
The only reason I use .env is because it’s dead simple and very obvious as to how it works to anyone.<p>If now someone has to read docs to figure out how to configure the app, I’d rather have them read docs for some other safer and more powerful configuration scheme.
评论 #40809436 未加载
michaelmior11 个月前
With leaking secrets being such a big concern, it seems wise to <i>require</i> that secrets be encrypted to use dotenvx. That is, it will only work with encrypted secrets. As others have commented, this doesn&#x27;t eliminate the risk entirely, but I think having a tool that doesn&#x27;t support unencrypted secrets at all, although a bit less convenient, is a win.
评论 #40794766 未加载
评论 #40793877 未加载
评论 #40795160 未加载
mplanchard11 个月前
Seems pretty similar to sops[0], but without the encrypted-by-default feature that makes sops feel significantly safer for secret management.<p>Sops also integrates easily with AWS and other existing key management solutions, so that you can use your existing IAM controls on keys.<p>I mentioned in another comment, but I&#x27;ve been using it over five years at two jobs and have found it to be great.<p>[0]: <a href="https:&#x2F;&#x2F;github.com&#x2F;getsops&#x2F;sops">https:&#x2F;&#x2F;github.com&#x2F;getsops&#x2F;sops</a>
评论 #40792639 未加载
评论 #40792978 未加载
golergka11 个月前
I don&#x27;t think encryption is a good idea, and the reason is forming bad habits. Now developers have a very strong and non-ambiguous habit: never put .env files in version control (except may be for .example.env). However, with this, you&#x27;ll get accustomed to commit .env in _some_ projects, so you&#x27;ll easily slip and commit it in another project where the vars are not encrypted.
brigadier13211 个月前
Encrypting secrets and committing them seems very convenient but I&#x27;m paranoid about these sorts of things. Can anyone tell me why this would be a bad idea?<p>One reason I can think of is that normally with secrets I actually don&#x27;t keep any copies of them. I just set them in whatever secret manager my cloud environment uses and never touch them again unless I need to rotate them. Meaning there is no way to accidentally expose them other than by the secret vault being hacked or my environment being hacked.<p>With this approach if someone gets access to the encryption key all secrets are exposed.
评论 #40791563 未加载
评论 #40790200 未加载
评论 #40798087 未加载
rrgok11 个月前
Can a kind soul point me some documentation on how to put .env in a vault correctly? Possibly open-source solutions?<p>If the vault is password protected, aren&#x27;t you just adding one more indirection and nothing more? How is that helpful, since now I have to write the vault password in clear-text somewhere such that my application can read the env file from the vault?
评论 #40790440 未加载
评论 #40792961 未加载
hamasho11 个月前
I want an option to manage all env in a single file using a TOML like format like this.<p><pre><code> [local] API_KEY=local-key API_SECRET=local-secret DB=postgresql:&#x2F;&#x2F;username:password@localhost:5432&#x2F;database_name [production] API_KEY=prod-key API_SECRET=prod-secret DB=postgresql:&#x2F;&#x2F;username:password@prod-db:5432&#x2F;database_name [staging] API_KEY=stg-key API_SECRET=stg-secret DB=$(production.DB) </code></pre> It makes it easier to update all env at once, compare, and share. It&#x27;s not much help, but it helps me avoid a few annoyances.<p>On an unrelated note, I always find it a real headache to keep the naming convention of the environments throughout the project. It always ends up like a mixed bag:<p><pre><code> * Juggling production&#x2F;prod, staging&#x2F;stg, and develop&#x2F;dev, * Inconsistent placement of env, e.g. prod-myproject or myproject-stg, * Skipping env name sometimes, e.g. myproject-bucket for dev S3 bucket but prod-myproject-bucket for prod (though it&#x27;s okay to emit env name for user facing places like URL), * Inconsistent resource sharing between envs, e.g. same S3 bucket for local and dev but different DB, or same Kubernetes cluster with different labels for dev&#x2F;stg but different cluster without a label for prod. </code></pre> These inconsistencies often result from quick decisions without much thought or out of necessities, and everyone is too scared to fix them anyway. But it bothers me a lot and sometimes causes serious bugs in production.<p>Fix: format
评论 #40792947 未加载
clord11 个月前
Env vars over-share and files depend on local permissions. We should have a capabilities -like way to send secrets between processes. e.g., decrypt and expose on a Unix socket with a sha filename that can only be read from once, and then gets torn down. Share the file name, target can read it and immediately the secret is now at-rest encrypted. Encryption based on config containing a whitelist of ssh public keys and what they can access, sort of like age.
评论 #40796926 未加载
wodenokoto11 个月前
On my phone so can’t double test, but can’t you get this by adding “export” in front of every line in your env file and then source before running command?<p>I suppose if you don’t want it to stay after execution i believe you can:<p><pre><code> &gt; $(source .env; my command) </code></pre> I’m sure there is a fairly straightforward way to encrypt and decrypt a local file
评论 #40792877 未加载
评论 #40790651 未加载
评论 #40790610 未加载
评论 #40791172 未加载
评论 #40790985 未加载
TZubiri11 个月前
Importing a set of library and dependencies to handle reading a plain text file poses more risks than just leaving the file unencrypted.<p>You don&#x27;t need to encrypt your keys, with what keys are you going to do so? Will you encrypt those?<p>if someone is in your server you are pwned anyways.<p>It&#x27;s ok if you identify yourself as a cybersecurity dude and hold a cybersecurity role and you need to justify your livelihood.<p>But do it in a way where you don&#x27;t bother people. It&#x27;s ok if you bother devs, but then you go on and bother users with 4FA, 5 rule passwords, systems that can&#x27;t answer subpoenas because you have encrypted your sense of self.<p>When you are improving security at the expense of every other variable, that&#x27;s annoying, but when you keep &quot;improving security&quot; at the expense even of security, is the point where people will start ignoring and hiding shit from you
评论 #40898703 未加载
评论 #40793470 未加载
ComputerGuru11 个月前
We’ve been pushing for committing encrypted secrets for many years now, and have written an open source spec and implementation in multiple languages: <a href="https:&#x2F;&#x2F;github.com&#x2F;neosmart&#x2F;securestore-rs">https:&#x2F;&#x2F;github.com&#x2F;neosmart&#x2F;securestore-rs</a>
评论 #40790949 未加载
评论 #40791273 未加载
评论 #40791723 未加载
frithsun11 个月前
Thanks, but I would rather go with the imperfect setup that I understand than an allegedly perfect setup with dozens of third party dependencies that I don&#x27;t understand.<p>Doubly the case now that env is natively supported by node now.
stiiv11 个月前
dotenv has zero npm dependencies. dotenvx has 21, including a few I have never heard of. Is this really more secure?
评论 #40792087 未加载
评论 #40798294 未加载
评论 #40794039 未加载
boundlessdreamz11 个月前
This is similar to how Rails handles secrets - <a href="https:&#x2F;&#x2F;edgeguides.rubyonrails.org&#x2F;security.html#environmental-security" rel="nofollow">https:&#x2F;&#x2F;edgeguides.rubyonrails.org&#x2F;security.html#environment...</a><p>In Rails, the entire file is encrypted unlike here where only the secrets are
评论 #40791216 未加载
评论 #40795241 未加载
评论 #40795573 未加载
dagss11 个月前
Something I have done for secrets is use a syntax in environment variables to tell the process to go a key vault for the secret.<p>So we can have<p>FOOPW=pw1<p>when testing locally, but<p>FOOPW=&quot;{vault1:secret1}&quot;<p>in production. Env vars are processed simply by running a regex with callback that fetches secrets from vaults. This is quite flexible and has the advantage of being able to inject the secrets in the same place as other configuration, without <i>actually</i> having the secrets in environment variables or git etc (even encrypted)
评论 #40800594 未加载
ashenke11 个月前
There&#x27;s a typo in the article, if the author reads this : &gt; But I think we have a solution to all three today - with dotenvx. In reverse problem order<p>The URL in `dotenvx` points to <a href="https:&#x2F;&#x2F;gitub.com&#x2F;dotenvx&#x2F;dotenvx" rel="nofollow">https:&#x2F;&#x2F;gitub.com&#x2F;dotenvx&#x2F;dotenvx</a> (gitub without the h)
评论 #40791759 未加载
hermanradtke11 个月前
I’ve been using dotenv-cli for a long time now. I appreciate the encryption, but I will keep loading secrets from a vault instead.
bluelightning2k11 个月前
I don&#x27;t really understand why this is a new project. Seems it would have been pretty simple to add these in a backwards compatible way.<p>It would only break in cases where people&#x27;s values specifically started with &quot;encrypted:&quot;
评论 #40791202 未加载
评论 #40790741 未加载
评论 #40791255 未加载
VWWHFSfQ11 个月前
I always used foreman [0] which I found to be superior to dotenv in every way. Even superior to this new dotenvx<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;ddollar&#x2F;foreman">https:&#x2F;&#x2F;github.com&#x2F;ddollar&#x2F;foreman</a>
评论 #40790111 未加载
评论 #40792682 未加载
drchickensalad11 个月前
Your &quot;a single gitignore append&quot; command overwrites existing .gitignore files. It should be `&gt;&gt;`
wodenokoto11 个月前
A lot of people here are saying that a vault is preferable to this, especially for secrets.<p>Is there a good primer on using vaults? I know how to query and insert into Azure Key Vaults, but architecting around it is unclear to me.<p>Things that come up for me:<p>- As (azure) key vaults don&#x27;t support per secret access rights, where do I store secrets between deployments?<p>- Should I store connection strings to cloud resources, or just ask the resource for the connection string at deployment time (for Azure, a cloud function pretty much needs a connection string for most basic things. They say they are moving away from this but ...)<p>- A security warning is send if a key is accessed more then x&#x2F;times per hour. Does that mean I should pull in the key from vault at deployment? Cache it after first call during runtime?<p>- Most of our 3rd party vendors gives us 1 and only 1 key. How do I manage that key between development, production and several developers? Right now we mostly forward the e-mail from the vendor with the key ...
politelemon11 个月前
I&#x27;m not comfortable that this tool is able to make HTTP requests, IMO it ought to be completely offline and not perform network operations. I did a search for requests and found some results pushing to and pulling from a &#x27;hub&#x27;. But I couldn&#x27;t figure out what the hub refers to.
pictur11 个月前
I think for some reason people don&#x27;t like such simple tools. I think it seems more reasonable to deploy a vault service running on kubernetes with jenkins. In some comments, they didn&#x27;t even understand what the tool was for. Dear dude, you can travel between dimensions with this tool.
jitl11 个月前
Secrets in env vars in production is not too secure either, ideally you’ll move to your app pulling secrets in-process from your infrastructure at boot-up or upon use. This also gives a nice advantage of not needing to rebuild the app or container or whatever to rotate a secret.
评论 #40789912 未加载
daralthus11 个月前
Would be nice to be able to configure which .env file to read as an environment variable. Why? Imagine a package.json with this line:<p>`start: dotenvx run -f .env.local -f .env -- node index.js`<p>Instead of the -f flag, which now cannot be overriden, one could invoke it with<p>`DOTENV=.env.staging npm run start`
评论 #40791340 未加载
评论 #40790124 未加载
sneak11 个月前
This seems to encourage committing encrypted secrets, which is a bad idea. Configuration and code should be in separate repositories. Secrets should be protected elsewhere.<p>The correct fix for “it’s too easy to accidentally commit .env files with secrets” is to not function (panic&#x2F;throw) if there isn’t a suitable .gitignore&#x2F;.dockerignore, not a specialized cryptosystem for .env files. This just creates a different problem.<p>I simply use an envdir outside of the project and update all my run scripts to use “envdir $CONFIG_PATH &lt;whatever&gt;”. Simpler and safer.
bradgessler11 个月前
I really wish 1Password would ship an environment manager for their op CLI.
nimishk11 个月前
I don&#x27;t think this is the best approach. I am building <a href="https:&#x2F;&#x2F;phase.dev" rel="nofollow">https:&#x2F;&#x2F;phase.dev</a> which lets you import secrets (.env), encrypt secrets (end-to-end encrypted with keys you control), sync them to other services&#x2F;platforms (think AWS, GitHub, Kubernetes), and inject them into applications at runtime (e.g., phase run node index.js).<p>Source: <a href="https:&#x2F;&#x2F;github.com&#x2F;phasehq&#x2F;console">https:&#x2F;&#x2F;github.com&#x2F;phasehq&#x2F;console</a>
评论 #40793082 未加载
tracker111 个月前
Since node v20.06, has built in support for --env-file=.env on load... as for local(ish) encryption and pushing them into source control, I don&#x27;t like this at all. I&#x27;m fine using a vault or secret distribution from either the environment host (k8s) or ci&#x2F;cd deployment.<p>I do like to keep a .env.example that you can rename to .env and adjust as desired. I tend to have defaults for running a compose stack locally that close to &quot;just works&quot; as possible.<p>I doubt I&#x27;d ever want to use this in practice.
PaulHoule11 个月前
My beef with it is that it&#x27;s written in Javascript whereas what it does is so simple that they should just code it up in Rust or Go and be done with it, particularly when it could be packed up as a tiny binary that doesn&#x27;t require you to install Node, Python, the JVM or any other runtime or library.
globular-toast11 个月前
Wait, people use the .env <i>file</i> for secrets?! I never even looked into this but just assumed this was a convenience for local dev to hold a local non-secret app config? In production you&#x27;d load the env from a secrets store like what kubernetes has or aws has for ec2 instances. You shouldn&#x27;t ever have those secrets on your local machine... Because they are secret.
the_duke11 个月前
We implemented the exact same method for config encryption a year ago or so, using pub&#x2F;private key auth and the same `encrypted:` prefixes for encrypted config values.<p>This is a great tradeoff: easy way to share configuration, easy way to edit non-encrypted config values, reasonable security for the private values.<p>Doesn&#x27;t solve key rotation of course, but for small teams this is a great solution.
skeledrew11 个月前
I&#x27;ve recently taken a simpler approach to handling secrets in .env files. Since I use autoenv and conda venvs for everything, I persist secrets outside all projects in appropriately-named files, so including them in a .env becomes similar to `source $HOME&#x2F;.secrets&#x2F;work__aws_access`. Also makes them easier to manage across projects.
Alifatisk11 个月前
So with this, I have to prefix every executable with dotenvx in order to utilize the env variables?<p>Can’t I somehow do this in the script itself so “ruby index.rb” is enough? I know I’m only saving a couple of characters in the command line but I’m asking out of curiosity.
difu_disciple11 个月前
I always thought highly of the approach used by <a href="https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;@strong-config&#x2F;node" rel="nofollow">https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;@strong-config&#x2F;node</a><p>Does dotenvx support secrets managers?
blacksoil11 个月前
Can someone help enlightening me. In terms of preventing leaks, since we still need to ensure that the .env.keys doesn&#x27;t leak, wouldn&#x27;t effort still be the same?<p>The ability to use arbitrary filename for.env is quite nice though!
评论 #40795385 未加载
kodeninja11 个月前
How would this work with application-specific Intellij Run&#x2F;Debug configurations? Would this require switching to a &quot;Shell Script&quot; configuration, thereby losing debugging capability etc?
sampli11 个月前
Based on my skim, this doesn’t really solve anything? The private key to decrypt is still stored on machine in a similar place? All this is doing is obfuscating?
ptdorf11 个月前
So.. it just swapped ignoring `.env` for `.env.keys`?
tamimio11 个月前
&gt; An attacker needs the DOTENV_PRIVATE_KEY<p>And the attackers will be after this file not the .env anymore.<p>It looks great nonetheless, especially the cross-language feature.
hooverd11 个月前
Personally, I like sops for encrypting my secrets.
panzi11 个月前
Wait, it&#x27;s also doing command interpolation? I missed that. Where is the code for that? I thought it uses dotenv-expand for interpolation, which can&#x27;t do commands. dotenv-expand is already a bit meh, because of how it resolves the variables after parsing the dotenv file. Meaning you can&#x27;t have a verbatim single quoted string and also you can get a stack overflow doing this:<p><pre><code> A=$B B=$A </code></pre> Anyway, I hope they don&#x27;t do command interpolation on top of that (like Ruby dotenv does), because then you can inject code via environment variables (like in the Ruby version).<p>I recently looked into various dotenv implementations just for fun. They&#x27;re all different. No unified syntax at all. A lot don&#x27;t do proper parsing either, but just use some regular expressions (like this one), which means they just skip over what doesn&#x27;t matches. I started to document all the quirks I could find and wrote my own dotenv dialect just for fun. Nobody use it! Anyway, here it is: <a href="https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;punktum">https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;punktum</a><p>Direct link to the quirks of the JavaScript dotenv implementation: <a href="https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;punktum?tab=readme-ov-file#javascript-dotenv-dialect">https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;punktum?tab=readme-ov-file#javascri...</a><p>I&#x27;ve also tried to write a parser compatible to JavaScript dotenv (no x) in C++: <a href="https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;cpp-dotenv">https:&#x2F;&#x2F;github.com&#x2F;panzi&#x2F;cpp-dotenv</a>
0xbadcafebee11 个月前
The whole idea of using environment variables for configuration information is good, but ultimately flawed, and we are way past the point where this should continue to be the status quo.<p>Environment variables are great for configuration because:<p><pre><code> - you can inherit them from a previous application or application(s) - you can override them in each environment you run your app in - you can pass them on to other applications - they are globals that can be loaded by libraries - they&#x27;re not hardcoded in the code, so easier to change things without rebuilding, easier to reuse in different ways&#x2F;environments&#x2F;configurations - the OS has primitives for them - they&#x27;re simple </code></pre> Environment variables are bad for configuration:<p><pre><code> - because (by default) when set in application, they are passed on to all future applications&#x2F;forks&#x2F;execs - they are often dumped as part of troubleshooting and aren&#x27;t considered confidential - they can often be viewed by external processes&#x2F;users - there are restrictions on key names and values and size depending on the platform - typical &quot;dotenv&quot; solution doesn&#x27;t necessarily handle things like multi-line strings, has no formal specification - no types, schemas </code></pre> What we actually need that environment variables are being used for:<p><pre><code> - configuration information passed at execution time that can change per environment - loading or passing secret values - development environments - production environments </code></pre> So what would be a good alternative?<p><pre><code> - an application library (&quot;libconfig&quot;) that can load configuration of various types from various sources in various ways - support for configuration types: key-value, file&#x2F;blob, integer&#x2F;float - support for confidentiality (require specific function to unseal secret values; in programming languages the intent would be you can&#x27;t just print a stringified version of the variable without an unseal function) - support for schema (application defines schema, throws exception if value does not match) - support allowing a configuration to be overloaded by different sources&#x2F;hierarchies - support passing a configuration on to other applications - support tracing, verbose logging - truly cross-platform and cross-language with one specification, behavior for all </code></pre> How would it work?<p><pre><code> - devs can create a .env file if they want - devs load &#x27;libconfig&#x27; into app, use it to load their configuration values during development. library can have default sources, and even set env vars or an object internally, so no code needs to be written to use it - in production, same code causes libconfig to look at cloud-native and other sources for configuration - when debugging, secret confidentiality is maintained, tracing communicates sources of configuration, what was loaded, from where, etc</code></pre>
评论 #40802809 未加载
daralthus11 个月前
GOAL: To be able to commit all your envs to git.<p>This is the only goal and this tool archives it. In the simplest way. While keeping you as secure as you were before, manually setting envs on heroku, railway, aws, jenkins etc.<p>GitOps FTW
评论 #40793790 未加载
swedonym11 个月前
Huge fan of dotenv, excited to try this out!
Aeolun11 个月前
It doesn’t have Typescript types!
rednafi11 个月前
Written in JS; I think I’ll pass.
nunez11 个月前
dotenvx encryption goes a long way towards solving THE BIGGEST problem with dotenv; using multiple tools to ensure that secrets are protected.<p>I wonder if dotenvx ensures that .env is in .gitignore and yells loudly if it is not.<p>I encrypt my dotenvs with gpg, but that&#x27;s hella esoteric and everyone shouldn&#x27;t be forced to do that.
评论 #40793585 未加载
yashbindal11 个月前
Intersting
jbverschoor11 个月前
Yet another problem already solved 25 years ago by the mighty Sun in the J2EE spec.
cyberax11 个月前
I _detest_ this kind of encryption. It&#x27;s literally worse than useless. It makes life much harder during debugging, and it eventually leads to developers just storing the decryption keys locally.<p>For this kind of encryption to work, you need to supply the decryption key from some outside system (e.g. via env vars, AWS SSM, etc.). And if it can supply the key, then why not just use it for other important secrets directly?
评论 #40792330 未加载
评论 #40791915 未加载
评论 #40791675 未加载
评论 #40792590 未加载
boxed11 个月前
I don&#x27;t get it. Dotenv is only good for local dev. Otherwise you should put your secrets in environment variables (the &quot;env&quot; in &quot;.env&quot;). That people put .env files in prod is a mistake itself, and the proposed fixes here seem to not really do much about that.
评论 #40789803 未加载
评论 #40790055 未加载
评论 #40789807 未加载
评论 #40797225 未加载
评论 #40789786 未加载
评论 #40790914 未加载
评论 #40789984 未加载
评论 #40790011 未加载
bdcravens11 个月前
Seems odd to announce new features without calling out to the fact that libraries with the same name in other languages have had those same features for years. (for example, the dotenv gem in Ruby)
评论 #40789723 未加载
评论 #40790017 未加载
评论 #40789748 未加载
throwaway24040311 个月前
&quot;Config Management&quot; means something else to systems folks. Suggest adding &quot;for node projects&quot; or something akin to the title to clarify.
评论 #40790129 未加载
评论 #40789842 未加载