dotfilesの作り方
dotfiles
dotfilesを作成しました。
エンジニアはエディタやshellの設定ファイル(dotfiles =設定ファイル)をdotfilesとしてGitHubで管理する文化があるようですが、初めてだと作り方など全然分からなかったのでまとめます。
作り方について説明する前に、なぜdotfilesを作るのかを説明します。
エンジニアは自分の好きなエディタや好きなshell、好きな開発環境をカスタマイズしていくと思います。 その環境をPCを変えるたびに構築するのは大変なので、設定ファイルをGitHubで管理してスクリプトを1つ実行すれば、いつもの開発環境が構築されるというのを実現するというのが主な目的だと思います。
dotfilesについては人によって様々ですが、その一例としてdotfilesの作り方について紹介します。
Step1 リポジトリ作成
GitHubに自分用のdotfilesリポジトリを作成します。
他の人のリポジトリもたくさん公開されているので参考にすると面白いです。 github.com
Step2 Applicationを自動でインストールできるようにbrew.shの用意
Macを使っている人であれば、brewを使ってツールやアプリケーションをインストールする人が多いと思います。
今回は、brew.sh
というshellスクリプトを実行すると、普段使っているツールやアプリケーションを自動でインストールできるようにしました。
用意したスクリプトは以下の通りです。brewが入っているかのチェックやbrew install
で列挙したツールを順番にインストールします。
またbrew cask
を使ってMacのGUIアプリケーションなどもインストールするようにしました。
#!/bin/sh -xe echo "installing homebrew..." which brew >/dev/null 2>&1 || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" echo "run brew doctor..." which brew >/dev/null 2>&1 && brew doctor echo "run brew update..." which brew >/dev/null 2>&1 && brew update echo "ok. run brew upgrade..." brew upgrade formulas=( git zsh fzf # 省略 ) echo "start brew install apps..." for formula in "${formulas[@]}"; do brew install $formula || brew upgrade $formula done brew tap caskroom/cask casks=( google-chrome firefox # 省略 ) echo "start brew cask install apps..." for cask in "${casks[@]}"; do brew cask install $cask done brew cleanup brew cask cleanup cat << END ************************************************** HOMEBREW INSTALLED! bye. ************************************************** END
Step3 各種設定ファイルを用意
dotfilesで管理したい設定ファイルを用意します。
自分の場合は以下のファイルを用意しました。
- .aliases
- .gitconfig
- .gitignore
- .hyper.js
- .screenrc
- .zshrc
Step4 dotfilesを環境に適用するためにinstall.shを用意
Step3で用意した設定ファイルをinstall.sh
というshellスクリプトを実行すれば、自分のルートにシンボリックリンクを貼ることで適用できるようにしました。
用意したスクリプトは以下の通りです。 今回はnodebrewでnodeをインストールするようにもしました。
#!/bin/sh -xe # 実行場所のディレクトリを取得 THIS_DIR=$(cd $(dirname $0); pwd) cd $THIS_DIR echo "\033[0;32mstart setup... \033[0;39m" echo "setup symbolic link..." # dotfileのシンボリックリンク作成 for f in .??* do [[ "$f" == ".git" ]] && continue [[ "$f" == ".DS_Store" ]] && continue ln -snfv ~/dotfiles/"$f" ~/ done echo "finish" source ~/.zshrc echo "setup nodebrew and node" if !(type "nodebrew" > /dev/null 2>&1); then curl -L git.io/nodebrew | perl - setup nodebrew install-binary stable nodebrew use stable fi echo "finish" echo "\033[0;32mAll Finish!!! \033[0;39m"
Step5 GitHubにpushしてREADME.mdを整備
Step2~Step4までで用意した設定ファイルやshellスクリプトをリポジトリへpushします。
また、install.sh
とbrew.sh
を用意したので、使い方などREADME.mdに書いておきます。あとで使う自分向けですね。
だいたいがリポジトリのクローンやshellスクリプトに実行権限を与えて、実行するくらいです。
$ git clone https://github.com/toshi-toma/dotfiles.git $ cd dotfiles $ chmod +x brew.sh $ sh brew.sh $ chmod +x install.sh $ sh install.sh
これで完成です。
さいごに
dotfilesがどんなものなのか?から5つのStepに分けて作り方を紹介しました。
他の人の設定を見ると、とても手が込んだものもあり面白かったです。
最初から頑張ると大変なので、まずはbrewでのアプリケーションのインストールとshellやgitの設定ファイルを用意するくらいが楽そうです。
また、こまめにメンテナンスしておく必要もありそうです。