explorers' club

explorations in dev, science, sci-fi, games, and other fun stuff!


Leave a comment

nvm/node: an easy way to use different versions for different projects

problem

I need to have different versions of node/npm for different projects.  I’d prefer to have each project “know” which version of node/npm it needs to use.


solution

prerequisites

Before we get started, there are a few prerequisites:

  • understand that this is a Mac solution.  While I’m sure a similar solution exists for Windows, I am neither knowledgeable enough nor inclined to write a compatible shell script for Windows at this time.
  • have/install nvm.  I installed mine with Brew.
  • have at least one version of node installed via nvm
  • have a basic understanding of terminal.
  • have a willingness to edit your .bash_profile.

gameplan

leveraging .nvmrc

Much like Ruby has a shortcut for setting the current version of Ruby to use, nvm has a similar feature.  When you enter the following command…

nvm use

… then nvm will look for a .nvmrc file and get the correct version number to use from there.  So first navigate to a project folder that uses node and create a new file called .nvmrc.  Inside just write 4.2.  If you’re a command-line geek then do the following:

cd <project folder>
touch .nvmrc # creates the file
echo \4.2 >> .nvmrc # appends the version to the file
cat .nvmrc # prints the file's contents

editing your .bash_profile

So the easiest way to make nvm read your .nvmrc file is to do a check when you change directories.  We need to make a function we can call when we cd into a directory:

All this is doing is

  • checking to see if the current directory matches the previous directory
  • if it doesn’t , then it stores the current directory to the previous’ variable
  • then it checks to see if a .nvmrc file exists
  • if so, then tell nvm to use it
  • lastly we tell the OS to call this command any time we do something in Terminal/Bash
Advertisements


Leave a comment

Note to Self: Angular Directive Communication (via Isolate Scope) to Parent Scope with Object Parameter

Given the following HTML

How do we communicate the value known only to the directive but passing back to the controller’s scope?  Like so:


Leave a comment

Angular: ngBackspace Directive

I’m not entirely sure why certain keys on a keyboard fire keydown but not keyup, some fire keypress while others don’t and then in the backspace’s case, it only fires on keyup.  Nevertheless I found myself in need of triggering action on backspace.

[gist https://gist.github.com/jusopi/b89fb2cd31a2da8d0fed]