All about NPM (Node Package Manager) https://www.npmjs.com/
Here are some of the differences between Packages and Modules within NPM
Packages:
- A “package” is a file or directory that is described by a package.json file. In other words, a package.json file defines a package. For example, if you create a file at node_modules/foo.js and then had a program that did var f = require(‘foo.js’), it would load the module. However,foo.js is not a “package” in this case, because it does not have a package.json.
- A package is any of:
- a) a folder containing a program described by a package.json file
- b) a gzipped tarball containing (a)
- c) a url that resolves to (b)
- d) a <name>@<version> that is published on the registry with (c)
- e) a <name>@<tag> that points to (d)
- f) a <name> that has a latest tag satisfying (e)
- g) a git url that, when cloned, results in (a).
- Even if the package is never published to the npm repository, you can circulate the packages locally and achieve benefits of using npm:
- if you just want to write a node program, and/or
- if you also want to be able to easily install it elsewhere after packing it up into a tarball
Modules:
- A module is any file or directory that can be loaded by Node.js’ require(). For example, if you create a package which does not have an index.js or a “main”field in the package.json file, then it is not a module. Even if it’s installed in node_modules, it can’t be an argument to require().
- ‘CLI’ packages for example is not modules since they only contain executable command line interface and don’t provide a main field for use in Node.js programs.
- A module is any of:
- A folder with a package.json file containing a main field.
- A folder with an index.js file in it.
- A JavaScript file.
- In the context of a Node program, the module is also the thing that was loaded from a file. For example, in the following program:
var req = require(‘request’)
we might say that “The variable req refers to the request module”.
- Most npm packages are modules because, npm packages that are used in Node.js program are loaded with require, making them modules. However, there’s no requirement that an npm package be a module
Here are the list of NPM commands that I use (some of which are the ones that I occasionally use).
npm -v
Gives the version of installed npm
npm install npm@latest -g
Installs the latest version of npm
npm install {packageName}
{packageName} can be any packages that are available on the npm repository. If the Packages are not available then npm CLI will throw error.
npm install {packageName} -g
options: -g
global install. Usually this gets installed in (/usr/local). If this option is not specified, node_modules gets installed in the same directory where you are on the terminal. Check pwd for the current directory.
For uninstalling use npm uninstall {packageName}
Note: Just in case if you do not have permissions to the folder (/usr/local), run the commands using sudo prefix
npm config get prefix
Gives the current directory where npm modules gets installed globally.
Check this https://docs.npmjs.com/getting-started/fixing-npm-permissions if you intend to change permissions.
npm init
This is used to create a package.json with a questionnaire being prompted on CLI.
npm init –yes
option –yes // Creates a default package.json file with default inputs, without asking any questions.
npm install {packageName} –save This adds entry to package.json’s dependencies attribute.
For removing the dependency use npm uninstall {packageName} – – save
npm install {packageName} –save-dev
This adds entry to package.json’s devDependencies attribute
For removing the dependency use npm uninstall {packageName} –save-dev
npm update
Updates the dependencies of the the packages defined in the package.json file. Note: The folder should contain package.json file
For updating all packages globally (/usr/local), use option -g; npm update -g
npm outdated
Check if the packages are outdated.
For checking all outdated packages globally (/usr/local), use option -g;
npm outdated -g
npm outdated -g –depth=0 // Same as above, but finds at a given depth
npm config list
Spits out the npm’s configuration file’s list
npm config ls -l
Lists out all the default values of npm’s configuration file.
npm ls OR npm list
Lists the dependencies and see the relationships of other dependent dependencies with version numbers
npm ls –depth=0
Lists only the primary dependencies. The other alternative is using the ‘tree’ command tree -d /usr/local/lib/node_modules
npm root
Gives the directory path where node moduels are installed. npm root -g gives the directory path where node modules are installed globally.
npm view {packageName} version
Ex: npm view angular version
Gives the package version that is installed locally. -g at the end of the command gives the package version installed globally.
Breakdown of NPM resources from NPM Documentation:
Using package.json with versioning’s and versioning details:
https://docs.npmjs.com/misc/semver
https://docs.npmjs.com/getting-started/using-a-package.json
https://docs.npmjs.com/getting-started/semantic-versioning
https://docs.npmjs.com/getting-started/using-tags
https://docs.npmjs.com/files/package.json
Creating and Publishing packages to npm registry:
https://docs.npmjs.com/getting-started/creating-node-modules
https://docs.npmjs.com/getting-started/publishing-npm-packages
NPM’s Dependency resolution, Duplication and DeDuplication
https://docs.npmjs.com/how-npm-works/npm2
https://docs.npmjs.com/how-npm-works/npm3
https://docs.npmjs.com/how-npm-works/npm3-dupe
https://docs.npmjs.com/how-npm-works/npm3-nondet