Update! There is now a script to do these steps for you.
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.
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
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.
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"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm use 4.0.0
pm2 start `which local-npm`Make it runnable: chmod a+x ~/.local-npm/run.sh.
Now, restart your machine or run:
launchctl load -w ~/Library/LaunchAgents/com.nolanlawson.localnpm.plist
Done! 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.
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.
@jimpick: Since PouchDB Server binds by default to
127.0.0.1, it's perfectly safe to run with the default settings. Unless you're worried someone will SSH tunnel into your machine, in which case it's already compromised. ;)