Corredor

ウェブ、プログラミングの勉強メモ。

GitHub に公開するリポジトリでパスワードなどを管理しないようにする方法

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

前回までに紹介した FTP 関連の npm パッケージの中で、FTP 接続先の情報をスクリプト内にベタ書きしていた。

// FTP 接続先情報
const user     = 'user';
const password = 'password';
const host     = 'example.com';

コレをそのまま GitHub なんかに Push してしまったらパスワード漏洩である。

そこで、こうした情報を Git 管理に含めない方法を考える。

方法1 : 環境変数に持つ

よくあるのは、パスワードなどを環境変数に設定しておくというモノだ。利用する時は process.env から情報を取得するようなやり方だ。

コレをやり始めると、プロジェクトごとの秘密情報を .bash_profile などにまとめておくことになる。コレでは .bash_profile を Dotfiles として GitHub に公開できないし、秘密情報が増えていった時に煩雑になる。

方法2 : dotenv を使う

dotenv というパッケージを使うと、環境変数情報は .env ファイルに退避させておき、require('dotenv').config() でこのファイルの内容を読み込める。

.gitignore.env ファイルを追加するのだけ忘れないようにする。

このやり方でも十分だが、情報を取得するためだけにパッケージを利用するのがなんとも大仰な感じがする。

方法3 : オリジナルの設定ファイルを require() する

自分なりのオススメは、production-config.js といったファイルを作り、このファイルを .gitignore に追加しておく、というモノ。

まずは production-config.js の内容。

module.exports = {
  // FTP 接続先情報
  ftp: {
    user    : 'user',
    password: 'password',
    host    : 'example.com'
  }
};

module.exports で、連想配列をエクスポートしておく。

次に利用側。production-config.js をそのまま require() しておけば良い。

// production-config.js をインポートする
const productionConfig = require('./production-config');

// FTP 接続先情報
const user     = productionConfig.ftp.user;
const password = productionConfig.ftp.password;
const host     = productionConfig.ftp.host;

コレで完了。こうした固定値で環境情報を用意していて、最初から.gitignore に追加しておくのであれば、別に dotenv などのパッケージを使わずともできる、という話だった。