Verwendung von Dotfiles zur Verwaltung von Entwicklung und vielen anderen magischen Dingen

Avatar of Simon Owen
Simon Owen am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Hallo zusammen! 🎉 Ich bin Simon Owen und im Laufe der Jahre war ich gerne Teil der Dotfiles-Community und habe von ihr gelernt. Ich verbringe viel Zeit damit, Entwickler zu schulen und Workshops zu leiten. In diesen Sitzungen ist die Demonstration, wie ich meine Entwicklungsumgebung einrichte, oft eines der Dinge, die die Leute am meisten schätzten.

Dotfiles sind ein wichtiger Bestandteil meiner Entwicklungsumgebung. Haben Sie noch nie davon gehört? Nun, auch wenn Sie es getan haben, ist es eine gute Idee, durchzugehen, was sie sind und welche Vorteile ihre Verwendung hat.

Letztes Jahr habe ich mir zum Ziel gesetzt, eine Screencast-Reihe zu erstellen. Wenn Ihnen dieser Artikel gefällt und Sie mehr erfahren möchten, abonnieren Sie den Newsletter und erhalten Sie den Download-Link. Wenn er Ihnen wirklich gefällt, können Sie auch 🦄 hier spenden! 🦄

Eine Dot-Was-Datei?

Wenn Sie zum ersten Mal von Dotfiles hören, ist es völlig in Ordnung, verwirrt zu sein, was sie sind und was sie tun. Ich erinnere mich, dass es eine beträchtliche Zeit gedauert hat, bis ich erkannte, dass eine Dotfile einfach eine Datei ist, die einen Punkt vor dem Dateinamen hat!

Es gibt zwei gängige Beispiele für Dotfiles. Erstens, die, mit denen Sie vielleicht schon vertraut sind, sind diejenigen, die oft im Stammverzeichnis vieler Open-Source-Projekte zu finden sind – zum Beispiel enthält .editorconfig Einstellungen für Code-Editoren, um konsistente Codierungsstile für ein Projekt beizubehalten. Möglicherweise haben Sie auch .stylelintrc und .eslintrc gesehen, die CSS- bzw. JavaScript-Regeln festlegen.

Zweitens (und die, die wir uns heute ansehen), sind Dotfiles, die sich auf der obersten Ebene eines Benutzerverzeichnisses befinden können (d. h. /Users/<Benutzername> ). Eine solche Dotfile ist .aliases, die benutzerdefinierte Befehlsnamen enthält, die die Arbeit im Terminal beschleunigen können. Eine weitere ist .bash_prompt, die verwendet wird, um das $ im Terminal in etwas Lustigeres zu ändern. In meinem Fall habe ich es so eingestellt, dass dieser Kerl auftaucht, um mich zum Lächeln zu bringen, wenn die Dinge schwierig werden.

༼ つ ◕_◕ ༽つ

Hoffentlich beginnen Sie bereits zu ahnen, wie nützlich Dotfiles sein können. Sie sind so etwas wie versteckte Juwelen (buchstäblich, da sie standardmäßig vor dem Ansicht verborgen sind), die Ihrer Maschine Superkräfte verleihen, um die Entwicklung zu unterstützen. Wir sprechen unter anderem von Automatisierung, Optimierungen und effizienten Arbeitsabläufen.

Zuerst möchte ich der Dotfiles-Community Anerkennung aussprechen

Bevor wir uns mit Dotfiles beschäftigen, ist es erwähnenswert, wie großartig die Community dahinter ist. Als ich zum ersten Mal das Dotfile-Repo von Paul Irish forkte, gab es darin vieles, was ich nicht verstand. Mathias Bynens und Paul Irish halfen mir immens, indem sie Fragen zum Code beantworteten, und ihre Hilfsbereitschaft war einer der Gründe, warum ich mich sowohl für das Konzept als auch für die Community interessierte.

Manchmal poste ich etwas in die Community, das ich automatisieren möchte, aber es einfach nicht hinbekomme. Und ohne Ausnahme erhalte ich eine hilfreiche Antwort. Als Beispiel: Eric Czarny schrieb eine App für mich, um meine Spectacle-Einstellungen zu automatisieren, und Mathias steuerte auch einen Code-Schnipsel bei. Wie cool ist das denn?!

Dann gibt es noch Dinge wie macOS-Updates. Die Dotfiles-Community ist oft darauf vorbereitet und gibt nützliche Ratschläge in GitHub-Kommentaren zu allem, was nicht mehr funktioniert, oder andere nützliche Informationen. Sie können dann Ihre Dotfiles entsprechend anpassen, z. B. indem Sie den folgenden Code hinzufügen, der die Klangqualität für Bluetooth-Kopfhörer/Headsets erhöht.

defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40

Einblick in Dotfiles

Das obige Codebeispiel mag Ihnen etwas bekannt vorkommen. Es ähnelt diesem oft verwendeten Beispiel, um versteckte Dateien anzuzeigen.

defaults write com.apple.finder AppleShowAllFiles -bool true

...oder diesem, um Leerräume zum Dock hinzuzufügen.

defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}'; killall Dock

Diese Befehle können direkt in das Terminal eingefügt werden. Wie Sie vielleicht erwarten, ändert etwas wie -bool true einen booleschen Wert von false zu true und setzt den Befehl für die spätere Verwendung zurück.

Wenn Sie wie ich **sehr viele** dieser Befehle haben, ist die Dotfile .macos (früher .osx) hier besonders nützlich. Anstatt jeden Befehl einzeln zu kopieren und einzufügen, können wir alle auf einmal automatisieren und ausführen.

Lassen Sie uns einige Beispiele durchgehen

Es gibt so viele tolle Dinge, die wir mit Dotfiles tun können. Hier sind einige praktische Anwendungsfälle, auf die ich mich bei meiner täglichen Arbeit verlasse.

Aliase für Standardbefehle festlegen (.aliases)

Die Navigation zwischen Verzeichnissen im Terminal kann umständlich sein und es ist leicht, sich in der cd-Manie zu verlieren.

Wir können den Standardbefehl „Change Directory“ (cd) durch einen benutzerdefinierten Befehl in der Dotfile .aliases ersetzen. Verwenden Sie zum Beispiel diesen Alias, um das cd-Präfix ganz zu vermeiden, wenn Sie den Befehl cd .. verwenden, um ein Verzeichnis nach oben zu wechseln, zugunsten von .. allein.

alias ..="cd .."

Sicher, es sind nur zwei Buchstaben weniger, aber wie viel einfacher ist das zu merken?

An animated screenshot of a Terminal window typing two periods instead of the full cd command to move up a level in the directory.

Dasselbe können wir tun, um Verknüpfungen zu bestimmten Verzeichnissen zu erstellen.

alias dl="cd ~/Downloads"

Oder erstellen Sie Aliase für Kurzbefehl-Aufgaben.

alias hs="hexo serve"
An animated screenshot of a Terminal window typing a command called hs instead of typing out hexo serve in full.

Oh, hier ist noch einer! Nur Verzeichnisse auflisten.

alias lsd="ls -lF ${colorflag} | grep --color=never '^d'"

Erstellen Sie eine benutzerdefinierte Bash-Eingabeaufforderung für eine persönliche Note im Terminal (.bash_prompt)

Ich habe dies vorhin erwähnt, aber hier ist, wie ich meine Bash-Eingabeaufforderung ($) in einen kleinen Kerl verwandelt habe, der viel lustiger anzusehen ist. Dies geschieht direkt in der Dotfile .bash_prompt.

PS1="༼ つ ◕_◕ ༽つ"

Git-Verknüpfungen erstellen, um Commits zu beschleunigen (.gitconfig)

Wir können das gleichzeitige Committen aller Änderungen in der Dotfile .gitconfig effizienter gestalten. Die Verwendung von ca ist deutlich kürzer als !git add -A && git commit -av.

ca = !git add -A && git commit -av

Eine weitere nützliche Verknüpfung: Commits nach Commit-Nachricht finden.

fm = "!f() { git log --pretty=format:'%C(yellow)%h  %Cblue%ad  %Creset%s%Cgreen  [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"

Automatisieren Sie gängige Homebrew-Aufgaben (brew.sh)

Verwenden Sie Homebrew für die Paketverwaltung? Obwohl nicht streng eine Dotfile (sie hat keinen Punkt vor dem Dateinamen), bietet uns Homebrew die Shell-Skript-Datei brew.sh. Diese Datei automatisiert die Installation und Verwaltung von Apps und Tools.

brew install git
brew install tree
brew cask install google-chrome
brew cask install iterm2
brew cask install sublime-text

Schützen Sie Ihre Git-Zugangsdaten (.extra)

Verstecken Sie Informationen, die Sie nicht öffentlich teilen möchten, in einer Datei in einem privaten Repository und bringen Sie sie nur für sich selbst herein. Zum Beispiel ist es eine gute Idee für diese Datei, alles, was für Sie spezifisch ist, wie Ihre Git-Zugangsdaten. Dies verhindert, dass Leute Ihre Dotfiles klonen, ausführen und dann unter Ihrem Namen committen!

# Git credentials
# Not in the repository, to prevent people from accidentally committing under my name
GIT_AUTHOR_NAME="Simon Owen"
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
git config --global user.name "$GIT_AUTHOR_NAME"
GIT_AUTHOR_EMAIL="<ADD-YOUR-EMAIL-HERE>"
GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
git config --global user.email "$GIT_AUTHOR_EMAIL"

Schreiben Sie benutzerdefinierte Funktionen für Aufgaben (.functions)

Dotfiles sind mehr als nur Verknüpfungen und Aliase. Wir können auch benutzerdefinierte Funktionen in .functions erstellen, die fortgeschrittenere Aufgaben erledigen. Zum Beispiel ein neues Verzeichnis erstellen und dorthin wechseln.

function mkd() {
  mkdir -p "$@" && cd "$_";
}
An animated screenshot of a Terminal window typing mkd new to trigger the creation of a new folder and navigating to it.

Oder wir können einen gegebenen Ort mit einem Ein-Buchstaben-Befehl (o) im Finder öffnen.

function o() {
  if [ $#-eq 0 ]; then
    open .;
  else
    open "$@";
  fi;
}

$PATH angeben und privat halten (.path)

$PATH ermöglicht die Ausführung von ausführbaren Dateien. Anstatt manuell zu jedem Pfad im Terminal zu navigieren, können wir hier die Dateipfade festlegen, sodass sie die ausführbaren Dateien direkt ausführen können. Es kann sein, dass diese Datei sensible Informationen enthält. Daher wird diese Datei oft in einem privaten Repository aufbewahrt.

Hier ist ein Beispiel, das ~/utils zu $PATH hinzufügt.

export PATH="$HOME/utils:$PATH"

Vim zwingen, ein bestimmtes Theme zu verwenden (.vimrc)

Editor-Konfigurationsdateien sind großartig, um eine konsistente Formatierung über Projekte hinweg sicherzustellen, aber wir können einen Vim-Editor auch so konfigurieren, dass er ein bestimmtes Theme in einer .vimrc-Datei verwendet.

" Use the Solarized Dark theme
set background=dark
colorscheme solarized
let g:solarized_termtrans=1

Bonus: Nützliche Terminal-Rezepte für macOS

Okay, hier ist ein kleiner Bonus für Mac-Benutzer, der nicht mit Dotfiles zusammenhängt, aber Dinge sind, die wir im Terminal tun können, um macOS Superkräfte zu verleihen, um ziemlich beeindruckende Dinge zu tun, die die tägliche Nutzung einfacher und angenehmer machen.

Zuerst können wir versteckte Dateien standardmäßig im Finder anzeigen lassen, sodass Dotfiles immer sichtbar sind, indem wir dies in das Terminal eingeben.

defaults write com.apple.finder AppleShowAllFiles -bool true

Finden Sie die Art und Weise, wie Scrollbalken im Finder ein- und ausgeblendet werden, störend? Lassen Sie uns sie jederzeit sichtbar machen.

defaults write NSGlobalDomain AppleShowScrollBars -string "Always"

Standardmäßig prüft macOS einmal pro Woche auf Software-Updates. Aber vielleicht möchten wir einmal täglich oder in einem anderen Intervall prüfen.

defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1

Sie wissen, wie das Halten einer Tastentaste diese Zeichen wiederholt? Nun, es wiederholt sich mit einer bestimmten Geschwindigkeit, die wir auf blitzschnell beschleunigen können.

defaults write NSGlobalDomain KeyRepeat -int 0

Manche Leute lieben die Art und Weise, wie macOS beim Erstellen eines Screenshots eines Fensters einen Schattenwurf einschließt. Andere nicht. Hier ist, wie man ihn ausschaltet.

defaults write com.apple.screencapture disable-shadow -bool true

Und in diesem Beispiel können wir die Größe der Icons im Dock automatisieren.

defaults write com.apple.dock tilesize -int 36

Dies ist nur die Spitze des Eisbergs! In meiner Screencast-Reihe gehe ich auf mehr als hundert davon ein.

Fazit

Webentwicklung wird mit der Zeit immer komplizierter. Wir alle haben Wege, unseren Entwicklungs-Workflow basierend auf persönlichen Vorlieben ein wenig einfacher und komfortabler zu gestalten.

Sie sind vielleicht ein erfahrener Entwickler und kennen Dinge wie Node, npm und Git, finden sich aber trotzdem in einem Terminal-Fenster mit einer Reihe von Fehlern wieder. Oder Sie fangen gerade an und finden diese und andere Werkzeuge komplex und schwer zu verstehen.

In jedem Fall gibt Ihnen das Wissen über Dotfiles und ihre Fähigkeiten hoffentlich eine neue Waffe in Ihrem Arsenal, um Ihre Entwicklungsumgebung individuell anzupassen, Ihren Workflow zu beschleunigen und Ihrer Maschine zusätzliche Superkräfte zu verleihen!

Zur Erinnerung: Meine Screencast-Reihe gibt Ihnen weitere Tipps und Tricks sowie eine gute Vorstellung davon, wie Sie Ihre Entwicklungsumgebung einrichten. Dies ist die erste in der Reihe. Zukünftig werde ich sie erweitern, also lassen Sie mich bitte wissen, wenn es etwas gibt, das ich noch behandeln soll!