Npm (software)

From David's Wiki
\( \newcommand{\P}[]{\unicode{xB6}} \newcommand{\AA}[]{\unicode{x212B}} \newcommand{\empty}[]{\emptyset} \newcommand{\O}[]{\emptyset} \newcommand{\Alpha}[]{Α} \newcommand{\Beta}[]{Β} \newcommand{\Epsilon}[]{Ε} \newcommand{\Iota}[]{Ι} \newcommand{\Kappa}[]{Κ} \newcommand{\Rho}[]{Ρ} \newcommand{\Tau}[]{Τ} \newcommand{\Zeta}[]{Ζ} \newcommand{\Mu}[]{\unicode{x039C}} \newcommand{\Chi}[]{Χ} \newcommand{\Eta}[]{\unicode{x0397}} \newcommand{\Nu}[]{\unicode{x039D}} \newcommand{\Omicron}[]{\unicode{x039F}} \DeclareMathOperator{\sgn}{sgn} \def\oiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x222F}\,}{\unicode{x222F}}{\unicode{x222F}}{\unicode{x222F}}}\,}\nolimits} \def\oiiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x2230}\,}{\unicode{x2230}}{\unicode{x2230}}{\unicode{x2230}}}\,}\nolimits} \)

NPM is a package manager for JavaScript and TypeScript projects.

Usage

# Install packages from package.json
npm install
# Install versioned packages from package-lock.json
npm ci

package.json

Example package.json
{
  "name": "@david18284/ddns-cloudflare",
  "version": "1.0.0",
  "description": "A DDNS Updater for Cloudflare.<br>\r This will scan for all \"A\" records and update their IPs.",
  "main": "./build/index.js",
  "bin": {
    "ddns-cloudflare": "./bin/cli.js"
  },
  "scripts": {
    "start": "npm run compile && node build/index.js",
    "compile": "babel src -d build",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/dli7319/ddns-cloudflare-javascript.git"
  },
  "author": "David Li",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/dli7319/ddns-cloudflare-javascript/issues"
  },
  "homepage": "https://github.com/dli7319/ddns-cloudflare-javascript#readme",
  "dependencies": {
    "node-fetch": "^2.3.0"
  },
  "devDependencies": {
    "@babel/cli": "^7.10.5",
    "@babel/core": "^7.11.4",
    "@babel/preset-env": "^7.11.0"
  }
}

  • scripts contains JS commands you can run with npm run
  • bin contains binaries or scripts which get installed globally.

Publishing

  1. Create an account at https://npmjs.org.
  2. Login to npm using npm login.
  3. Initialize a package.json using npm init.
    • I recommend using a scoped name @username/package-name.
  4. Make a UMD build e.g. using webpack.
    • Fill in all the details in package.json.
    • For publishing the most important are: name, version, description, main, module, author, repository, license, files, homepage.
  5. Test your package.
    • Run your own tests using npm run test.
    • Install to another package using `npm install [dir]`.
  6. Version and upload to npm
    npm version [major|minor|patch]
    
    npm publish --access public

Resources