NP* tipy (npm, npx, …)

Agregované poznámky k používání npm.


Obsah
  1. Instance balíčků (npm install)
  2. NPM scripty (npm run)
  3. Homepage, dokumentace, …, duplikáty a zranitelnosti
  4. Konfigurace (npm init)
  5. NPX
  6. Reference

Instance balíčků (npm install)

Obecně zápis vypadá takto:

# α= parametry, β= balíčky … podrobněji v popisku
npm install α β


# aliasy
npm add α β
npm i α β


# uvnitř balíčku (závislosti z `package.json`)
npm install
npm ci


# více informací
man npm install
npm help install

Pseudo příkaz – ukázka použití npm install, k řeckým písmenům:

  • α: --save-dev (-D), --global (-g), --no-save
  • β: lze i více balíčků najednou oddělené mezerami, lze i eslint-{a,b} (nainstaluje eslint-a a …). Připsáním @* lze nainstalovat konkrétní verzi.

Lze instalovat z jiných zdrojů, více balíčků najednou, provést čistou instalaci (ci), … viz [npm_tipy_12][npm_tipy_daily].

Odinstalaci lze provést uninstall nebo rm. Podobně existuje outdated, install pak lze použít k aktualizaci balíčků v repozitáři – případně [ncu_clanek]. Nové balíčky lze vyhledávat pomocí search.

NPM scripty (npm run)

Takto lze spouštět příkazy definované v:

1
2
3
4
5
6
7
8
9
10
11
12
{
  "scripts": {
    "build": "echo \"Call `npm run build:{win|mac} --target TARGET` for running on Windows/Mac(Linux) and TARGET is device id target (see `adb`)\"",
    "build:win": "gulp build && cd .. && cordova run --target %npm_config_target% > build.log 2>&1",
    "build:mac": "gulp build && cd .. && cordova run --target $npm_config_target > build.log 2>&1",
    "jshint": "node ./node_modules/jshint/bin/jshint --verbose",
    "jshint_full": "node ./node_modules/jshint/bin/jshint --verbose --show-non-errors",
    "git-changelog": "node -e \"console.log(`## `+require(`./package.json`).version);\" > CHANGELOG.md && git --no-pager log --oneline --color --pretty=\"- %s%d\" --grep=\":bug:\\|:boom:\\|:hammer:\" >> CHANGELOG.md",
    "publish": "npm set //registry.npmjs.org/:_authToken",
    "postpublish": "npm publish"
  }
}

Ukázka definice skriptů package.json

…lze používat &, &&, ||| k řetězení příkazů (viz analogické použití v bashi), či npm_config_*1 proměnná reprezentující příslušný přepínač při volání scriptu (či nastavení v package.json). Pro předání argumentů (pro npm <2.0.0) je potřeba použít --npm run jshint -- file.js. [npm_scripts]

Homepage, dokumentace, …, duplikáty a zranitelnosti

npm Θ Ψ dále umožňuje (pro Θ):

  • informace o balíčku (za Ψ se doplní jméno balíčku): view, docs, homepage, repo, bugs, …
  • smazat duplicitní balíčky: dedupe (dpp)
  • zkontrolovat zranitelnosti: audit (jako Ψ lze použít příkaz fix)
  • kontroly: doctor
  • vytvořit symlink: link (pro použití například lokálního balíčku)
  • listovat lokální balíčky: list (ls, jako Ψ lze --depth=0)

Konfigurace (npm init)

Lze předefinovat sdílené informace (mimojiné npm config set init.**) a přeskakovat interaktivní část (-y) viz [npm_tipy_12][npm_tipy_10].

NPX

NPX zjednodušeně slouží jako alias pro spouštění binárek nainstalovaných balíčků. [npx_plus_diff] [npx_info]

Hodí se (i) pro defautlní balíčky, často například používám:

npx serve ./

Lokální server pro statické soubory v aktuálním adresáři (serve - npm)

Reference

  1. [npm_tipy_12] NPM Tips and Tricks. 12 useful NPM tips and tricks for more… | by Ankit Jain | Bits and Pieces – instalace balíčků, inicializace balíčku, NPM skripty
  2. [npm_tipy_10] 10 Tips and Tricks That Will Make You an npm Ninja - SitePoint – automatické doplňování (npm completion >> ~/.bashrc), přesun globálních balíčků (linux) kvůli sudo, konfigurace
  3. [npm_tipy_daily] NPM tips and tricks. If you use NPM in your day-to-day… | by Jair Reina | Noteworthy - The Journal Blog
  4. [npm_scripts] npm Scripts: Tips Everyone Should Know
  5. [npx_plus_diff] Using npx and npm scripts to Reduce the Burden of Developer Tools - DEV
  6. [npx_info] NPX makes NPM nicer and even more useful | by Jair Reina | Medium
  7. [ncu_clanek] How to update all npm packages to latest version | Reactgo – Článek o balíčku npm-check-updates (příkaz npu)
  1. Přesněji se používá %npm_config_*/$npm_config_* pro windows/bash (viz skripty build v ukázce).