How to Use the Command Line to Increase Speed of Development
-
Upload
acquia -
Category
Technology
-
view
774 -
download
0
Transcript of How to Use the Command Line to Increase Speed of Development
How to Use the Command Line to Increase Speed of Development
Dave MyburghSenior Engineer and Team Lead on www.acquia.com
About Me● Dave Myburgh● Team lead for www.acquia.com, training, dev, engage● Most recently worked on docs D6 -> D8 update● 10 years of Drupal● First site in 4.7 and it's still running :)● Started on PC, now on Mac● From DOS to Terminal (autoexec.bat to .bash_profile)
What we will cover● Pimp out that prompt for Git● Bash profile● Aliases● Drush● File editing● SASS & Compass● Drupal 8 & Composer
Pimp my prompt● Git on the command line● .git-completion.bash
https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
● .git-prompt.shhttp://git-prompt.shsource ~/.git-completion.bashsource ~/.git-prompt.shexport PS1="[fun_stuff_here]"
export PS1='[\t]:\w\[\033[0;32m\]$(__git_ps1 " (%s)")\[\033[0;0m\]\$ ';
time path start green
THE MAGIC
end green
For more prompt styling: https://wiki.archlinux.org/index.php/Bash/Prompt_customization
PS1 = main/primary prompt
Bash profile● .bash_profile on Mac, .bash_rc on Linux● aliases
e.g. alias l="ls =al"● directory listing colors
e.g. export LSCOLORS=GxFxCxDxBxegedabagacad● setting paths to programs:
export PATH="$PATH:/Applications/Dev Desktop/drush"
Bash profile (cont.)● custom functions
Convert an mp4 video file into an mp3: mp4-mp3() { # ${1%.*} returns only the filename, not the extension. ffmpeg -i "$1" -f mp3 -ab 192000 -vn "${1%.*}".mp3 }
● lots more out there:http://blog.taylormcgann.com/2012/06/13/customize-your-shell-command-prompt
Bash profile: Aliases● TIP: separate file for aliases, load from .bash_profile
source ~/.aliases
● some of favorites:alias l="ls -al"alias dev="cd ~/Sites/devdesktop/acquiacom-dev/docroot"alias gitb="git branch"alias gits="git status"alias ssh-ac-dev="ssh [user].dev@[server].network.hosting.acquia.com"alias fixwebcam="sudo killall VDCAssistant"
Drush● The Drupal shell (http://www.drush.org)● command line shell and scripting interface● ships with lots of useful commands● Drupal modules can add more commands
e.g. Backup & Migrate● THE most useful command line utility for Drupal
Drush (cont.)● Two main ways to get it:
○ Acquia Dev Desktop (Mac & Win)○ install globally for your computer via command line:
$ wget http://files.drush.org/drush.phar$ chmod +x drush.phar$ sudo mv drush.phar /usr/local/bin/drush
● http://docs.drush.org/en/master/install for more help
Drush (cont.)● Some of the most used commands:
$ drush cc [all] (clear all caches)$ drush dl [module_name]$ drush en [module_name]$ drush updb (run update.php)$ drush sql-cli (login to mysql)$ drush sql-connect (show mysql connection string)$ drush uli [username] (user login)$ drush sa (show site aliases)$ drush @acquia.prod cc all (clear caches on acquia)$ drush up [module_name] (update modules)
Drush (cont.)● Some Drupal 8 changes & additions:
$ drush cc all (clear all caches) => drush cr (cache rebuild)$ drush dis [module_name] (disable module) => drush pm-uninstall (also used in D7 & below)$ drush config-export / cex (export config)$ drush config-import / cim (import config)$ drush config-pull (copy config to new env)$ drush up drupal!!and many, many more...$ drush $ drush help [command]
Drush (cont.)● Acquia Dev Desktop:
to avoid this:Command xxxx needs a higher bootstrap level to run...
File Editing● Vi (Vim), Nano, Emacs, etc.● Personal favorite is nano● Similar commands like DOS editors: Ctrl-[key]● No typing : before commands● Tip: show line numbers all the time (else nano -c)
.nanorc:set const
● Some people use Vim for all editing, instead of an IDE like PHPStorm
SASS & Compass● Syntactically Awesome StyleSheets● extension of CSS, so regular CSS is 100% valid● get to use variables, nested rules, mixins (functions)● files use .scss extension● create separate files for regions/content types/whatever
and they all get loaded by one file● http://sass-lang.com● https://smacss.com (scalable and modular architecture)
SASS & Compass (cont.)● Compass is a CSS authoring framework that uses
SASS● provides many useful mixins (functions)● basically, it compiles your SASS files into actual CSS● compass watch will monitor changes to your .scss
files and rebuild the .css file● requires Ruby and a config.rb file in theme folder● http://compass-style.org
SASS & Compass (cont.)Example: sass/style.scss: @import 'components/base';
sass/components/_base.scss: $blue: #29aee1; a { color: $blue; &:hover { color: darken($blue, 10%); } }
SASS & Compass (cont.)Example: styles/style.css: a { color: #29aae1; } a:hover { color: #1a90bd; }
$ compass watch (to constantly monitor for changes)$ compass compile (to manually update changes)
SASS & Compass (cont.)● SO much more...● https://rvm.io/rvm/install (Ruby installation via RVM)● http://www.ruby-lang.org/en/documentation/installation
(regular Ruby install) ● http://sass-lang.com● http://compass-style.org● https://smacss.com
Drupal 8 & Composer● new way of managing site dependencies● Composer Manager module is a helper module with a
Drupal UI too (requires Composer command-line tool:https://getcomposer.org)
● can replace drush make or work with it● some modules now use composer for their
dependencies - look for composer.json file● https://www.drupal.
org/documentation/install/composer-dependencies
Drupal 8 & Composer (cont.)● so what's the workflow with composer?● recommended to install composer_manager module,
which will automatically update root composer.json with a module's requirements:$ drush dl composer_manager$ php modules/composer_manager/scripts/init.php
● then download your module(s) and run:$ composer drupal-update
● all dependencies, including core, will get updated
Drupal 8 & Composer (cont.)● without Composer Manager, you can manually edit root
composer.json to add modules, run composer update to then download the module and its dependencies
● Note: vendor directory will get updated often! Don't worry, those dependencies are restricted to certain versions in core/composer.json, so things won't break e.g."jcalderonzumba/mink-phantomjs-driver": "~0.3.1", (i.e. >=0.3.1 and <0.4)
Q & A
Thank You!