ホームページ  >  記事  >  ウェブフロントエンド  >  nodejs設定ファイルの処理方法の紹介

nodejs設定ファイルの処理方法の紹介

不言
不言転載
2019-01-02 09:51:033959ブラウズ

この記事では、nodejs 設定ファイルの処理方法を紹介します。必要な方は参考にしていただければ幸いです。

一般的に言えば、適切なプロジェクト構成は次の条件を満たす必要があります:

  1. 依存環境: 構成は特定の動作環境に依存します。対応するファイルの読み取り環境

  2. #コード分離: 設定項目は設定ファイルだけでなく環境変数からも読み取れるため、設定項目は安全かつ機密になります。コードから

  3. #使いやすい: 構成項目は、エントリの検索と巨大な構成ファイルの管理を容易にするために階層的に構成する必要があり、整理しやすいものである必要があります。 json構造

複数人でnodejsプロジェクトを開発する場合、構成計画が計画されていないと、構成ファイルの問題が容易に露呈してしまいます。 。

問題点

nodejsの開発プロジェクトで、3つの問題点に遭遇しました

  1. さまざまなデプロイメント環境:開発、テスト環境と本番環境の違いにより構成が異なります

  2. 開発環境の違い: 開発者の開発環境構成が異なる場合、開発環境の構成項目も異なります。同じ構成ファイル 同じファイルの異なる内容を送信すると、簡単に Git の競合が発生し、Git 送信の更新に影響を与える可能性があります

  3. 安全な構成: 一部の構成はクリア テキストで保存すべきではありませんデータベース パスワードなどのプロジェクト コード内で

  4. #ソリューション

さまざまなデプロイメント環境

さまざまなデプロイメント環境の場合、解決するのは比較的簡単です。対応する環境の構成ファイル (例:

    開発環境構成:developmentConfig.js
  1. テスト環境構成:testConfig.js
  2. 実稼働環境の構成:productionConfig.js
  3. 構成を取得するための入り口として、別の
config.js

構成ファイルを作成します。 <pre class="brush:php;toolbar:false">module.exports = require(`./${process.env.NODE_ENV}Config.js`)</pre>設定を参照する場合は、

config.js

を引用するだけです。 次のようにコマンドを実行します:

NODE_ENV=開発ノードindex.js
異なる開発環境

異なる開発環境については、全員の

developmentConfig.js

違うのですが、他の人の構成があなたの構成と同じである必要はありません。そうしないと、プロジェクトが難しくなりすぎます。 developmentConfig.js
.gitignore に追加してプロジェクトから分離し、readme.md## で developmentConfig を構成する方法を説明します。 # .jsdevelopmentConfig.example.js を作成し、ドキュメントの説明を
developmentConfig.js にコピーして、独自の開発構成に一致するように構成項目を変更することをお勧めします。 安全な構成

プロジェクト内の高度なセキュリティ要件を持つ一部の構成アイテムは、現在実行中のプロセスでのみ取得できるようにする必要があります。設定ファイルは、データベース パスワードなどのプロセスの設定項目の値を読み取るための一般的な方法は次のとおりです。

productionConfig.js


module.exports = {
    database: {
        user: process.env.user || 'root',
        password: process.env.password || 'yfwzx2019'
    }
}
詳細シークレット メソッドは、私が環境変数を使用していることを知らないということです。例:

productionConfig.js

module.exports = {
    database: {
        user: 'root',
        password: 'yfwzx2019'
    }
}
この構成では、データベース アカウントのパスワードが root、

yfwzx2019 であると認識され、最終的には環境変数の値によって実際に上書きされます。 次のように実行します。 #nodeindex.js --database_user=combine --database_password=tencent2019

もちろん、このように構成する前に、いくつかの処理を行う必要があります。 実際の操作

計画ができたので、まず次のnodejs設定モジュールを導入しましょう rc module

rc module

Use

rc

モジュールは

appname

を定義する必要があります。rc モジュールは、appname の名前に関連するできるだけ多くの場所から構成を読み取るため、選択されます。 。 これは、最初に rc 設定を実行する場合にも非常に簡単です: var conf = require('rc')(appname,defaultConfigObject)

次に。次のリストは構成をマージし、優先順位は順番にマージされます。

コマンド ライン パラメーター: --user=root またはオブジェクト形式の割り当て --database.user =root

  1. 環境変数: 環境変数のプレフィックスは ${appname}_変数 appname_user=root オブジェクト形式 appname_database__user=root

  2. 指定したファイル:node Index.js --config ファイル

  3. デフォルト設定ファイル:

    ./ ../ ../../ ../ から
  4. を検索します。 ./../
  5. およびその他のディレクトリ ${appname}rc

    File##$HOME/.${appname}rc

  6. $HOME/.${アプリ名}/config

  7. $HOME/.config/${アプリ名}

  8. #$HOME/.config/${アプリ名}/config

  9. ##/etc/ ${appname}rc

  10. /etc/${appname}/config

  11. 私はより直観的にするためのデモ

    var conf = require('rc')('development', {
      port: 3000,
    })
    console.log(JSON.stringify(conf))
    
    // 1、直接运行
    // node index.js
    // { port: 3000, _: [] }
    
    // 2、加上命令行参数
    // node index.js --port=4000 --database.user=root
    // { port: 4000, _: [], database: { user: 'root' } }
    
    // 3、加上环境变量
    // development_port=5000 development_database__password=yfwzx2019 node index.js 
    // {"port":"5000","database":{"password":"yfwzx2019"},"_":[]}
    
    // 4、指定配置文件:根目录建一个配置文件 config.json, 内容如下
    // {
    //   "port": "6000"
    // }
    // node index.js --config=config.json
    // {"port":"6000","_":[],"config":"config.json","configs":["config.json"]}
    
    // 5、默认读取 ${appname}rc 文件:根目录见一个配置文件 .developmentrc 内容如下:
    // {
    //   "port": 7000  
    // }
    // node index.js
    // {"port":7000,"_":[],"configs":[".developmentrc"],"config":".developmentrc"}
    
    // 6、 5 和4 一起运行
    // node index.js --config=config.json
    // {"port":"6000","_":[],"config":"config.json","configs":[".developmentrc","config.json"]}

    具体操作

    看了 rc 模块,可以满足我们的需求,我们可以配置公共的配置项,也可以隐秘的覆盖我们的配置项。

    1. 创建配置文件目录,添加配置文件

    ├── config
    │   ├── .developmentrc.example
    │   ├── .productionrc
    │   ├── .testrc
    │   └── index.js

    其中 .developmentrc.example 是开发环境的例子,然后开发人员参考建 .developmentrc 文件, index.js 是配置入口文件,内容如下:

    let rc = require('rc')
    
    // 因为 rc 是从 process.cwd() 向上查找 .appnamerc 文件的,我们在根目录 config 文件夹里面的是找不到的,要改变工作路径到当前,再改回去
    var originCwd = process.cwd()
    process.chdir(__dirname)
    var conf = rc(process.env.NODE_ENV || 'production', {
      // 默认的共同配置
      origin: 'default',
      baseUrl: 'http://google.com/api',
      enableProxy: true,
      port: 3000,
      database: {
        user: 'root',
        password: 'yfwzx2019'
      }
    })
    
    process.chdir(originCwd)
    
    module.exports = conf
    1. 关于部署环境的不同,获取配置通过设置环境变量NODE_ENV来适配

    2. 关于开发环境的不同,在.gitignore添加config/.developmentrc,项目代码去掉开发环境配置.developmentrc,开发人员根据.developmentrc.example建直接的开发配置.developmentrc

    3. 关于安全地配置,通过添加环境变量覆盖默认值,可以安全隐秘地覆盖配置项,比如:

    NODE_ENV=production node index.js --database.password=tencent2019


以上がnodejs設定ファイルの処理方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。