Node Package Manager

Basis Tecnologia da Informação S.A. - 2019

Visão Geral

NPM é um gerernciador de dependências para projetos javaScript.

Outras ferramentas

  • Grunt

  • Gulp

  • Webpack

Instalação

sudo apt install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo apt install nodejs
node -v
npm -v

Atualização

npm install npm@latest -g

O que é o package.json?

Basicamente o arquivo package.json é responsável por listar e gerenciar as dependências do projeto.

Seções do package.json

  • name

  • version

  • description

  • scripts

  • config

  • dependencies

Exemplo

{
  "author": "Jonathan Monteiro",
  "license": "MIT",
  "name": "myProject",
  "version": "1.0.0",
  "description": "Test",
  "main": "index.js",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxy.conf.json",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^7.2.0",
    "@angular/cdk": "^7.2.0",
    "@angular/common": "^7.2.0",
    "@angular/compiler": "^7.2.0",
    "@angular/core": "^7.2.0",
    "@angular/forms": "^7.2.0",
    "@angular/http": "^7.2.0",
    "@angular/platform-browser": "^7.2.0",
    "@angular/platform-browser-dynamic": "^7.2.0",
    "@angular/router": "^7.2.0",
    "@nuvem/angular-base": "^7.2.2",
    "@nuvem/primeng-components": "^7.2.4-beta-3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.6.8",
    "typescript": "3.1.6",
    "@types/jasmine": "2.8.8",
    "@types/node": "8.9.5",
    "jasmine-core": "2.99.1",
    "jasmine-spec-reporter": "4.2.1",
    "karma": "1.7.1",
    "karma-chrome-launcher": "2.2.0",
    "karma-coverage-istanbul-reporter": "2.0.1",
    "karma-jasmine": "1.1.2",
    "karma-jasmine-html-reporter": "0.2.2"
  },
  "engines": {
    "npm": ">=5.0"
  }
}

Instalando Dependências

npm install <dependencia>@<versao>
npm install -g <dependencia>@<versao>
npm install --save
npm i --save-dev

A pós a execução dos comandos de instalação as dependências serão gravadas na pasta node_modules

Definição de versões

ConstraintInternally

1.2.3

=1.2.3.0-lasted

>1.2

>1.2.0.0-lasted

>=1.2

>=1.2.0.0-dev

>=1.2-stable

>=1.2.0.0-lasted

<1.3

<1.3.0.0-dev

Definição de versões

ConstraintInternally

⇐1.3

⇐1.3.0.0-lasted

1 - 2

>=1.0.0.0-dev <3.0.0.0-dev

~1.3

>=1.3.0.0-dev <2.0.0.0-dev

1.4.*

>=1.4.0.0-dev <1.5.0.0-dev

^1.4

equivalente a >=1.4 e <2.0

O que é o package-lock.json

A finalidade deste arquivo é garantir que as dependências permaneçam as mesmas em todas as máquinas nas quais o projeto está instalado. Ele é gerado automaticamente para todas as operações em que o npm modifica a pasta node_modules ou o arquivo package.json.

Documentação