目次
さまざまなデプロイメント環境
さまざまなデプロイメント環境の場合、解決するのは比較的簡単です。対応する環境の構成ファイル (例:
異なる開発環境については、全員の
rc module
モジュールは
具体操作
ホームページ ウェブフロントエンド jsチュートリアル nodejs設定ファイルの処理方法の紹介

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

Jan 02, 2019 am 09:51 AM
node.js

この記事では、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

構成ファイルを作成します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">module.exports = require(`./${process.env.NODE_ENV}Config.js`)</pre><div class="contentsignin">ログイン後にコピー</div></div>設定を参照する場合は、

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

最適な Node.js Docker イメージを選択する方法について話しましょう。 最適な Node.js Docker イメージを選択する方法について話しましょう。 Dec 13, 2022 pm 08:00 PM

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Nov 16, 2022 pm 08:34 PM

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Nov 29, 2022 pm 08:44 PM

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

Nodeのイベントループについて話しましょう Nodeのイベントループについて話しましょう Apr 11, 2023 pm 07:08 PM

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードのバッファーについて詳しく見る ノードのバッファーについて詳しく見る Apr 25, 2023 pm 07:49 PM

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。

See all articles