Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Setting up local-npm as a launch daemon on OS X and Ubuntu.

Setting up local-npm on OS X and Ubuntu

These instructions will set up local-npm so that it runs as a launch daemon, meaning that it will start up whenever you log in.

Install local-npm

First, install local-npm and pm2:

npm install -g local-npm
npm install -g pm2

Then choose a directory to store all the local-npm data:

mkdir ~/.local-npm

Create startup script

Create a run script and save it as ~/.local-npm/run.sh. I also use nvm to choose my Node version:

#!/usr/bin/env bash

export PATH=$PATH:/usr/local/bin

# optional: set up nvm
export NVM_DIR="/Users/YOUR_USERNAME/.nvm"
if [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"; then  # This loads nvm
  nvm use 4.0.0
fi

pm2 start -s `which local-npm`

Make it runnable: chmod a+x ~/.local-npm/run.sh.

OS X Only

Next, make a plist file and save it as ~/Library/LaunchAgents/com.nolanlawson.localnpm.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.nolanlawson.localnpm</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/YOUR_USERNAME/.local-npm/run.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>StandardErrorPath</key>
    <string>/tmp/localnpm.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/localnpm.out</string>
    <key>UserName</key>
    <string>YOUR_USERNAME</string>
    <key>WorkingDirectory</key>
    <string>/Users/YOUR_USERNAME/.local-npm</string>
  </dict>
</plist>

Make sure to replace YOUR_USERNAME above with your username.

Now, restart your machine or run:

launchctl load -w ~/Library/LaunchAgents/com.nolanlawson.localnpm.plist

Ubuntu only

Add startup script to ~/.profile

echo "~/.local-npm/run.sh" >> ~/.profile

Set npm registery

Now just set npm to use your local-npm registry:

npm set registry http://127.0.0.1:5080

Or you can use npmrc to manage this.

Browse local-npm

A handy extra that comes with local-npm's server setup is a simple in-browser UI for browsing local modules and searching for them. You can access this at http://localhost:5080/_browse.

You can see the local-npm logs by running:

pm2 logs

You can also see the PouchDB Server Fauxton UI at http://localhost:16984/_utils, which is pretty fun.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment