Writing Node Scripts

Published See discussion on Twitter

When I find myself repeatedly making edits to a large number of files, or if I need to collect some metadata about a collection of files I tend to reach for a quick and dirty Node script.

Usually I can get by with a script.js file written somewhere and then run it via node script.js, however sometimes I want to turn a script into a small node package that I can install and reference elsewhere.

To accomplish that I usually reach for adding a package.json with a bin script entry pointing to the node script.

1{
2 "name": "my-cool-package",
3 "version": "1.0.0",
4 "bin": {
5 "name": "./index.js"
6 }
7}
1{
2 "name": "my-cool-package",
3 "version": "1.0.0",
4 "bin": {
5 "name": "./index.js"
6 }
7}

However, before the traditional node script can be run via name, we need to do two other things to the index.js file that the bin command is referencing.

First we need to add a line at the top of the file:

1#!/usr/bin/env node
1#!/usr/bin/env node

In addition to adding that line to the top of the file, we also need to change the mode of the file, we can do that via:

1chmod u+x index.js
1chmod u+x index.js

For more information, this article on node shell scripting is a great one to reference: https://2ality.com/2011/12/nodejs-shell-scripting.html