Npm (software): Difference between revisions

From David's Wiki
(Created page with "NPM is a package manager for JavaScript and TypeScript projects. ==Usage== ==Publishing== # Create an account at [https://npmjs.org https://npmjs.org]. # Login to npm using...")
 
 
(7 intermediate revisions by the same user not shown)
Line 2: Line 2:


==Usage==
==Usage==
<pre>
# Install packages from package.json
npm install
# Install versioned packages from package-lock.json
npm ci
</pre>
==package.json==
{{hidden | Example package.json |
<pre>
{
  "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"
  }
}
</pre>
}}
* <code>scripts</code> contains JS commands you can run with <code>npm run</code>
* <code>bin</code> contains binaries or scripts which get installed globally.


==Publishing==
==Publishing==
Line 9: Line 57:
# Initialize a <code>package.json</code> using <code>npm init</code>.
# Initialize a <code>package.json</code> using <code>npm init</code>.
#* I recommend using a scoped name <code>@''username/package-name''</code>.
#* I recommend using a scoped name <code>@''username/package-name''</code>.
# Make a build e.g. using webpack.
# Make a UMD build e.g. using webpack.
#* Fill in all the details in <code>package.json</code>.
#* Fill in all the details in <code>package.json</code>.
#* For publishing the most important are: name, version, description, main, module, author, repository, license, files, homepage.
#* For publishing the most important are: name, version, description, main, module, author, repository, license, files, homepage.
# Test your package.
#* Run your own tests using <code>npm run test</code>.
#* Install to another package using `npm install [dir]`.
# Version and upload to npm
#: <pre>npm version [major|minor|patch]
#:: npm publish --access public</pre>


==Resources==
==Resources==
* [[https://zellwk.com/blog/publish-to-npm/ https://zellwk.com/blog/publish-to-npm/ zellwk publish to npm]
* [https://zellwk.com/blog/publish-to-npm/ https://zellwk.com/blog/publish-to-npm/ zellwk publish to npm]

Latest revision as of 14:31, 17 July 2021

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