【问题标题】:Is it possible to execute package options without having to explicitly declare them in package.json?是否可以执行包选项而不必在 package.json 中显式声明它们?
【发布时间】:2019-01-19 08:56:11
【问题描述】:

我不确定用确切的术语来描述我的问题,但我希望我的凭据不会在 package.json 中公开,例如,这个包使用说明:

node ./app.js | pino-mongodb [options]

所以在我的package.json 中,如果我实现它,它会是这样的:

"start": 'node ./app.js | pino-mongodb --username=myUser --password=myPw'

如何在不暴露在 git 存储库中的凭据的情况下处理这样的包?

感谢您的建议。

示例包:https://github.com/pinojs/pino-mongodb

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    你可以使用环境变量,像这样:

    package.json

    "start": "node ./app.js | pino-mongodb --username=${USERNAME} --password=${PASSWORD}"
    

    设置好环境变量后,从命令行调用它。一个简单的方法:

    USERNAME=johndoe PASSWORD=secret666 npm run start
    

    注意:这在 MacOS 和 Linux 中运行良好,for Windows, see related question

    如果您的环境变量存储在.env 文件中,您可以使用source 命令读取它们,如下所示:

    package.json

    "start": "source .env && node ./app.js | pino-mongodb --username=${USERNAME} --password=${PASSWORD}"
    

    【讨论】:

    • 谢谢。你如何自动做到这一点?我试过"init": "sh -ac '. .env;'", "start": "yarn run init && node ./app.js | pino-mongodb --username=${USERNAME} --password=${PASSWORD},它没有加载它。
    • 我不明白你所说的“自动”是什么意思。您的意思是在 CI 配置中?
    • 很抱歉给您带来了困惑。目前我所有的环境变量都在一个.env 文件中,通过dotenv npm 包加载后,我可以在我的代码中通过process.env 访问该文件。在您的回答中,您在启动脚本之前在 CLI 中一一设置。
    • 谢谢,别介意我的评论,我是使用加载 .env 文件的 better-npm-run 包解决的:) 现在可以使用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2013-12-16
    • 2022-11-25
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多