node的包管理工具npm
node現在的火熱程度一點都沒有下降,而成為了前端必備工具,特別是npm的包庫已經成為了前端必備的,即使你不接觸node作為後端的存在,現在各種第三方包依然需要使用npm來管理,可以說一個現代化的前段工程如果不使用類似npm這樣的包管理工具的話,應該不算一個大型工程。
npm使用
官方網站:https://docs.npmjs.com/ ,npm的安裝什麼的就不說了,node的大部分版本也都自帶了npm,npm管理者node的大部分包,開發者可以上傳自己寫的包供他人使用,也可以下載使用別人寫好的包進行使用,
使用npm init 來進行初始化一個專案,會生成一個package.json檔案,而版本管理就依賴這個檔案,官方給的樣例檔案:
{
"version": "5.3.0",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
"install",
"modules",
"package manager",
"package.json"
],
"preferGlobal": true,
"config": {
"publishtest": false
},
"homepage": "https://docs.npmjs.com/",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"url": "http://blog.izs.me"
},
"repository": {
"type": "git",
"url": "git+https://github.com/npm/npm.git"
},
"bugs": {
"url": "https://github.com/npm/npm/issues"
},
"directories": {
"bin": "./bin",
"doc": "./doc",
"lib": "./lib",
"man": "./man"
},
"main": "./lib/npm.js",
"bin": {
"npm": "./bin/npm-cli.js",
"npx": "./bin/npx-cli.js"
},
"dependencies": {
"JSONStream": "~1.3.1",
"abbrev": "~1.1.0",
"ansi-regex": "~3.0.0",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
"aproba": "~1.1.2",
"archy": "~1.0.0",
"bluebird": "~3.5.0",
"cacache": "~9.2.9",
"call-limit": "~1.1.0",
"chownr": "~1.0.1",
"cmd-shim": "~2.0.2",
"columnify": "~1.5.4",
"config-chain": "~1.1.11",
"detect-indent": "~5.0.0",
"dezalgo": "~1.0.3",
"editor": "~1.0.0",
"fs-vacuum": "~1.2.10",
"fs-write-stream-atomic": "~1.0.10",
"fstream": "~1.0.11",
"fstream-npm": "~1.2.1",
"glob": "~7.1.2",
"graceful-fs": "~4.1.11",
"has-unicode": "~2.0.1",
"hosted-git-info": "~2.5.0",
"iferr": "~0.1.5",
"inflight": "~1.0.6",
"inherits": "~2.0.3",
"ini": "~1.3.4",
"init-package-json": "~1.10.1",
"lazy-property": "~1.0.0",
"libnpx": "~9.2.0",
"lockfile": "~1.0.3",
"lodash._baseuniq": "~4.6.0",
"lodash.clonedeep": "~4.5.0",
"lodash.union": "~4.6.0",
"lodash.uniq": "~4.5.0",
"lodash.without": "~4.4.0",
"lru-cache": "~4.1.1",
"mississippi": "~1.3.0",
"mkdirp": "~0.5.1",
"move-concurrently": "~1.0.1",
"node-gyp": "~3.6.2",
"nopt": "~4.0.1",
"normalize-package-data": "~2.4.0",
"npm-cache-filename": "~1.0.2",
"npm-install-checks": "~3.0.0",
"npm-package-arg": "~5.1.2",
"npm-registry-client": "~8.4.0",
"npm-user-validate": "~1.0.0",
"npmlog": "~4.1.2",
"once": "~1.4.0",
"opener": "~1.4.3",
"osenv": "~0.1.4",
"pacote": "~2.7.38",
"path-is-inside": "~1.0.2",
"promise-inflight": "~1.0.1",
"read": "~1.0.7",
"read-cmd-shim": "~1.0.1",
"read-installed": "~4.0.3",
"read-package-json": "~2.0.10",
"read-package-tree": "~5.1.6",
"readable-stream": "~2.3.3",
"request": "~2.81.0",
"retry": "~0.10.1",
"rimraf": "~2.6.1",
"safe-buffer": "~5.1.1",
"semver": "~5.3.0",
"sha": "~2.0.1",
"slide": "~1.1.6",
"sorted-object": "~2.0.1",
"sorted-union-stream": "~2.1.3",
"ssri": "~4.1.6",
"strip-ansi": "~4.0.0",
"tar": "~2.2.1",
"text-table": "~0.2.0",
"uid-number": "0.0.6",
"umask": "~1.1.0",
"unique-filename": "~1.1.0",
"unpipe": "~1.0.0",
"update-notifier": "~2.2.0",
"uuid": "~3.1.0",
"validate-npm-package-name": "~3.0.0",
"which": "~1.2.14",
"worker-farm": "~1.4.1",
"wrappy": "~1.0.2",
"write-file-atomic": "~2.1.0",
"debuglog": "*",
"imurmurhash": "*",
"lodash._baseindexof": "*",
"lodash._bindcallback": "*",
"lodash._cacheindexof": "*",
"lodash._createcache": "*",
"lodash._getnative": "*",
"lodash.restparam": "*",
"readdir-scoped-modules": "*",
"validate-npm-package-license": "*"
},
"bundleDependencies": [
"abbrev",
"ansi-regex",
"ansicolors",
"ansistyles",
"aproba",
"archy",
"cacache",
"call-limit",
"bluebird",
"chownr",
"cmd-shim",
"columnify",
"config-chain",
"debuglog",
"detect-indent",
"dezalgo",
"editor",
"fs-vacuum",
"fs-write-stream-atomic",
"fstream",
"fstream-npm",
"glob",
"graceful-fs",
"has-unicode",
"hosted-git-info",
"iferr",
"imurmurhash",
"inflight",
"inherits",
"ini",
"init-package-json",
"JSONStream",
"lazy-property",
"lockfile",
"lodash._baseindexof",
"lodash._baseuniq",
"lodash._bindcallback",
"lodash._cacheindexof",
"lodash._createcache",
"lodash._getnative",
"lodash.clonedeep",
"lodash.restparam",
"lodash.union",
"lodash.uniq",
"lodash.without",
"lru-cache",
"mkdirp",
"mississippi",
"move-concurrently",
"node-gyp",
"nopt",
"normalize-package-data",
"npm-cache-filename",
"npm-install-checks",
"npm-package-arg",
"npm-registry-client",
"npm-user-validate",
"npmlog",
"once",
"opener",
"osenv",
"pacote",
"path-is-inside",
"promise-inflight",
"read",
"read-cmd-shim",
"read-installed",
"read-package-json",
"read-package-tree",
"readable-stream",
"readdir-scoped-modules",
"request",
"retry",
"rimraf",
"semver",
"sha",
"slide",
"sorted-object",
"sorted-union-stream",
"ssri",
"strip-ansi",
"tar",
"text-table",
"uid-number",
"umask",
"unique-filename",
"unpipe",
"update-notifier",
"uuid",
"validate-npm-package-license",
"validate-npm-package-name",
"which",
"wrappy",
"write-file-atomic",
"safe-buffer",
"worker-farm",
"libnpx"
],
"devDependencies": {
"deep-equal": "~1.0.1",
"marked": "~0.3.6",
"marked-man": "~0.2.1",
"npm-registry-couchapp": "~2.6.13",
"npm-registry-mock": "~1.1.0",
"require-inject": "~1.4.2",
"sprintf-js": "~1.1.1",
"standard": "~6.0.8",
"tacks": "~1.2.6",
"tap": "~10.7.0"
},
"scripts": {
"dumpconf": "env | grep npm | sort | uniq",
"prepare": "node bin/npm-cli.js --no-timing prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 doc",
"preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m "update AUTHORS" || true",
"tap": "tap --timeout 300",
"tap-cover": "tap --nyc-arg=`--cache` --coverage --timeout 600",
"test": "standard && npm run test-tap",
"test-coverage": "npm run tap-cover -- "test/tap/*.js" "test/network/*.js" "test/broken-under-*/*.js"",
"test-tap": "npm run tap -- "test/tap/*.js" "test/network/*.js" "test/broken-under-*/*.js"",
"test-node": "tap --timeout 240 "test/tap/*.js" "test/network/*.js" "test/broken-under-nyc*/*.js""
},
"license": "Artistic-2.0",
"contributors": [
{
"name": "Isaac Z. Schlueter",
"email": "i@izs.me"
},
{
"name": "Steve Steiner",
"email": "ssteinerX@gmail.com"
},
{
"name": "Mikeal Rogers",
"email": "mikeal.rogers@gmail.com"
},
{
"name": "Aaron Blohowiak",
"email": "aaron.blohowiak@gmail.com"
},
{
"name": "Martyn Smith",
"email": "martyn@dollyfish.net.nz"
},
{
"name": "Charlie Robbins",
"email": "charlie.robbins@gmail.com"
},
{
"name": "Francisco Treacy",
"email": "francisco.treacy@gmail.com"
},
{
"name": "Cliffano Subagio",
"email": "cliffano@gmail.com"
},
{
"name": "Christian Eager",
"email": "christian.eager@nokia.com"
},
{
"name": "Dav Glass",
"email": "davglass@gmail.com"
},
{
"name": "Alex K. Wolfe",
"email": "alexkwolfe@gmail.com"
},
{
"name": "James Sanders",
"email": "jimmyjazz14@gmail.com"
},
{
"name": "Reid Burke",
"email": "me@reidburke.com"
},
{
"name": "Arlo Breault",
"email": "arlolra@gmail.com"
},
{
"name": "Timo Derstappen",
"email": "teemow@gmail.com"
},
{
"name": "Bart Teeuwisse",
"email": "bart.teeuwisse@thecodemill.biz"
},
{
"name": "Ben Noordhuis",
"email": "info@bnoordhuis.nl"
},
{
"name": "Tor Valamo",
"email": "tor.valamo@gmail.com"
},
{
"name": "Whyme.Lyu",
"email": "5longluna@gmail.com"
},
{
"name": "Olivier Melcher",
"email": "olivier.melcher@gmail.com"
},
{
"name": "Toma啪 Muraus",
"email": "kami@k5-storitve.net"
},
{
"name": "Evan Meagher",
"email": "evan.meagher@gmail.com"
},
{
"name": "Orlando Vazquez",
"email": "ovazquez@gmail.com"
},
{
"name": "Kai Chen",
"email": "kaichenxyz@gmail.com"
},
{
"name": "George Miroshnykov",
"email": "gmiroshnykov@lohika.com"
},
{
"name": "Geoff Flarity",
"email": "geoff.flarity@gmail.com"
},
{
"name": "Max Goodman",
"email": "c@chromakode.com"
},
{
"name": "Pete Kruckenberg",
"email": "pete@kruckenberg.com"
},
{
"name": "Laurie Harper",
"email": "laurie@holoweb.net"
},
{
"name": "Chris Wong",
"email": "chris@chriswongstudio.com"
},
{
"name": "Scott Bronson",
"email": "brons_github@rinspin.com"
},
{
"name": "Federico Romero",
"email": "federomero@gmail.com"
},
{
"name": "Visnu Pitiyanuvath",
"email": "visnupx@gmail.com"
},
{
"name": "Irakli Gozalishvili",
"email": "rfobic@gmail.com"
},
{
"name": "Mark Cahill",
"email": "mark@tiemonster.info"
},
{
"name": "Tony",
"email": "zearin@gonk.net"
},
{
"name": "Iain Sproat",
"email": "iainsproat@gmail.com"
},
{
"name": "Trent Mick",
"email": "trentm@gmail.com"
},
{
"name": "Felix Geisendo虉rfer",
"email": "felix@debuggable.com"
},
{
"name": "Jameson Little",
"email": "t.jameson.little@gmail.com"
},
{
"name": "Conny Brunnkvist",
"email": "conny@fuchsia.se"
},
{
"name": "Will Elwood",
"email": "w.elwood08@gmail.com"
},
{
"name": "Dean Landolt",
"email": "dean@deanlandolt.com"
},
{
"name": "Oleg Efimov",
"email": "efimovov@gmail.com"
},
{
"name": "Martin Cooper",
"email": "mfncooper@gmail.com"
},
{
"name": "Jann Horn",
"email": "jannhorn@googlemail.com"
},
{
"name": "Andrew Bradley",
"email": "cspotcode@gmail.com"
},
{
"name": "Maciej Ma艂ecki",
"email": "me@mmalecki.com"
},
{
"name": "Stephen Sugden",
"email": "glurgle@gmail.com"
},
{
"name": "Michael Budde",
"email": "mbudde@gmail.com"
},
{
"name": "Jason Smith",
"email": "jhs@iriscouch.com"
},
{
"name": "Gautham Pai",
"email": "buzypi@gmail.com"
},
{
"name": "David Trejo",
"email": "david.daniel.trejo@gmail.com"
},
{
"name": "Paul Vorbach",
"email": "paul@vorb.de"
},
{
"name": "George Ornbo",
"email": "george@shapeshed.com"
},
{
"name": "Tim Oxley",
"email": "secoif@gmail.com"
},
{
"name": "Tyler Green",
"email": "tyler.green2@gmail.com"
},
{
"name": "Dave Pacheco",
"email": "dap@joyent.com"
},
{
"name": "Danila Gerasimov",
"email": "danila.gerasimov@gmail.com"
},
{
"name": "Rod Vagg",
"email": "rod@vagg.org"
},
{
"name": "Christian Howe",
"email": "coderarity@gmail.com"
},
{
"name": "Andrew Lunny",
"email": "alunny@gmail.com"
},
{
"name": "Henrik Hodne",
"email": "dvyjones@binaryhex.com"
},
{
"name": "Adam Blackburn",
"email": "regality@gmail.com"
},
{
"name": "Kris Windham",
"email": "kriswindham@gmail.com"
},
{
"name": "Jens Grunert",
"email": "jens.grunert@gmail.com"
},
{
"name": "Joost-Wim Boekesteijn",
"email": "joost-wim@boekesteijn.nl"
},
{
"name": "Dalmais Maxence",
"email": "root@ip-10-195-202-5.ec2.internal"
},
{
"name": "Marcus Ekwall",
"email": "marcus.ekwall@gmail.com"
},
{
"name": "Aaron Stacy",
"email": "aaron.r.stacy@gmail.com"
},
{
"name": "Phillip Howell",
"email": "phowell@cothm.org"
},
{
"name": "Domenic Denicola",
"email": "domenic@domenicdenicola.com"
},
{
"name": "James Halliday",
"email": "mail@substack.net"
},
{
"name": "Jeremy Cantrell",
"email": "jmcantrell@gmail.com"
},
{
"name": "Ribettes",
"email": "patlogan29@gmail.com"
},
{
"name": "Don Park",
"email": "donpark@docuverse.com"
},
{
"name": "Einar Otto Stangvik",
"email": "einaros@gmail.com"
},
{
"name": "Kei Son",
"email": "heyacct@gmail.com"
},
{
"name": "Nicolas Morel",
"email": "marsup@gmail.com"
},
{
"name": "Mark Dube",
"email": "markisdee@gmail.com"
},
{
"name": "Nathan Rajlich",
"email": "nathan@tootallnate.net"
},
{
"name": "Maxim Bogushevich",
"email": "boga1@mail.ru"
},
{
"name": "Meaglin",
"email": "Meaglin.wasabi@gmail.com"
},
{
"name": "Ben Evans",
"email": "ben@bensbit.co.uk"
},
{
"name": "Nathan Zadoks",
"email": "nathan@nathan7.eu"
},
{
"name": "Brian White",
"email": "mscdex@mscdex.net"
},
{
"name": "Jed Schmidt",
"email": "tr@nslator.jp"
},
{
"name": "Ian Livingstone",
"email": "ianl@cs.dal.ca"
},
{
"name": "Patrick Pfeiffer",
"email": "patrick@buzzle.at"
},
{
"name": "Paul Miller",
"email": "paul@paulmillr.com"
},
{
"name": "Ryan Emery",
"email": "seebees@gmail.com"
},
{
"name": "Carl Lange",
"email": "carl@flax.ie"
},
{
"name": "Jan Lehnardt",
"email": "jan@apache.org"
},
{
"name": "Stuart P. Bentley",
"email": "stuart@testtrack4.com"
},
{
"name": "Johan Sk枚ld",
"email": "johan@skold.cc"
},
{
"name": "Stuart Knightley",
"email": "stuart@stuartk.com"
},
{
"name": "Niggler",
"email": "nirk.niggler@gmail.com"
},
{
"name": "Paolo Fragomeni",
"email": "paolo@async.ly"
},
{
"name": "Jaakko Manninen",
"email": "jaakko@rocketpack.fi"
},
{
"name": "Luke Arduini",
"email": "luke.arduini@gmail.com"
},
{
"name": "Larz Conwell",
"email": "larz@larz-laptop.(none)",
"url": "none"
},
{
"name": "Marcel Klehr",
"email": "mklehr@gmx.net"
},
{
"name": "Robert Kowalski",
"email": "rok@kowalski.gd"
},
{
"name": "Forbes Lindesay",
"email": "forbes@lindesay.co.uk"
},
{
"name": "Vaz Allen",
"email": "vaz@tryptid.com"
},
{
"name": "Jake Verbaten",
"email": "raynos2@gmail.com"
},
{
"name": "Schabse Laks",
"email": "Dev@SLaks.net"
},
{
"name": "Florian Margaine",
"email": "florian@margaine.com"
},
{
"name": "Johan Nordberg",
"email": "its@johan-nordberg.com"
},
{
"name": "Ian Babrou",
"email": "ibobrik@gmail.com"
},
{
"name": "Di Wu",
"email": "dwu@palantir.com"
},
{
"name": "Mathias Bynens",
"email": "mathias@qiwi.be"
},
{
"name": "Matt McClure",
"email": "matt.mcclure@mapmyfitness.com"
},
{
"name": "Matt Lunn",
"email": "matt@mattlunn.me.uk"
},
{
"name": "Alexey Kreschuk",
"email": "akrsch@gmail.com"
},
{
"name": "elisee",
"email": "elisee@sparklin.org"
},
{
"name": "Robert Gieseke",
"email": "robert.gieseke@gmail.com"
},
{
"name": "Franc抬ois Frisch",
"email": "francoisfrisch@gmail.com"
},
{
"name": "Trevor Burnham",
"email": "tburnham@hubspot.com"
},
{
"name": "Alan Shaw",
"email": "alan@freestyle-developments.co.uk"
},
{
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
},
{
"name": "Nicholas Kinsey",
"email": "pyro@feisty.io"
},
{
"name": "Paulo Cesar",
"email": "pauloc062@gmail.com"
},
{
"name": "Elan Shanker",
"email": "elan.shanker@gmail.com"
},
{
"name": "Jon Spencer",
"email": "jon@jonspencer.ca"
},
{
"name": "Jason Diamond",
"email": "jason@diamond.name"
},
{
"name": "Maximilian Antoni",
"email": "mail@maxantoni.de"
},
{
"name": "Thom Blake",
"email": "tblake@brightroll.com"
},
{
"name": "Jess Martin",
"email": "jessmartin@gmail.com"
},
{
"name": "Spain Train",
"email": "michael.spainhower@opower.com"
},
{
"name": "Alex Rodionov",
"email": "p0deje@gmail.com"
},
{
"name": "Matt Colyer",
"email": "matt@colyer.name"
},
{
"name": "Evan You",
"email": "yyx990803@gmail.com"
},
{
"name": "bitspill",
"email": "bitspill+github@bitspill.net"
},
{
"name": "Gabriel Falkenberg",
"email": "gabriel.falkenberg@gmail.com"
},
{
"name": "Alexej Yaroshevich",
"email": "alex@qfox.ru"
},
{
"name": "Quim Calpe",
"email": "quim@kalpe.com"
},
{
"name": "Steve Mason",
"email": "stevem@brandwatch.com"
},
{
"name": "Wil Moore III",
"email": "wil.moore@wilmoore.com"
},
{
"name": "Sergey Belov",
"email": "peimei@ya.ru"
},
{
"name": "Tom Huang",
"email": "hzlhu.dargon@gmail.com"
},
{
"name": "CamilleM",
"email": "camille.moulin@alterway.fr"
},
{
"name": "S茅bastien Santoro",
"email": "dereckson@espace-win.org"
},
{
"name": "Evan Lucas",
"email": "evan@btc.com"
},
{
"name": "Quinn Slack",
"email": "qslack@qslack.com"
},
{
"name": "Alex Kocharin",
"email": "alex@kocharin.ru"
},
{
"name": "Daniel Santiago",
"email": "daniel.santiago@highlevelwebs.com"
},
{
"name": "Denis Gladkikh",
"email": "outcoldman@gmail.com"
},
{
"name": "Andrew Horton",
"email": "andrew.j.horton@gmail.com"
},
{
"name": "Zeke Sikelianos",
"email": "zeke@sikelianos.com"
},
{
"name": "Dylan Greene",
"email": "dylang@gmail.com"
},
{
"name": "Franck Cuny",
"email": "franck.cuny@gmail.com"
},
{
"name": "Yeonghoon Park",
"email": "sola92@gmail.com"
},
{
"name": "Rafael de Oleza",
"email": "rafa@spotify.com"
},
{
"name": "Mikola Lysenko",
"email": "mikolalysenko@gmail.com"
},
{
"name": "Yazhong Liu",
"email": "yorkiefixer@gmail.com"
},
{
"name": "Neil Gentleman",
"email": "ngentleman@gmail.com"
},
{
"name": "Kris Kowal",
"email": "kris.kowal@cixar.com"
},
{
"name": "Alex Gorbatchev",
"email": "alex.gorbatchev@gmail.com"
},
{
"name": "Shawn Wildermuth",
"email": "shawn@wildermuth.com"
},
{
"name": "Wesley de Souza",
"email": "wesleywex@gmail.com"
},
{
"name": "yoyoyogi",
"email": "yogesh.k@gmail.com"
},
{
"name": "J. Tangelder",
"email": "j.tangelder@gmail.com"
},
{
"name": "Jean Lauliac",
"email": "jean@lauliac.com"
},
{
"name": "Andrey Kislyuk",
"email": "kislyuk@gmail.com"
},
{
"name": "Thorsten Lorenz",
"email": "thlorenz@gmx.de"
},
{
"name": "Julian Gruber",
"email": "julian@juliangruber.com"
},
{
"name": "Benjamin Coe",
"email": "bencoe@gmail.com"
},
{
"name": "Alex Ford",
"email": "Alex.Ford@CodeTunnel.com"
},
{
"name": "Matt Hickford",
"email": "matt.hickford@gmail.com"
},
{
"name": "Sean McGivern",
"email": "sean.mcgivern@rightscale.com"
},
{
"name": "C J Silverio",
"email": "ceejceej@gmail.com"
},
{
"name": "Robin Tweedie",
"email": "robin@songkick.com"
},
{
"name": "Miroslav Bajto擰",
"email": "miroslav@strongloop.com"
},
{
"name": "David Glasser",
"email": "glasser@davidglasser.net"
},
{
"name": "Gianluca Casati",
"email": "casati_gianluca@yahoo.it"
},
{
"name": "Forrest L Norvell",
"email": "ogd@aoaioxxysz.net"
},
{
"name": "Karsten Tinnefeld",
"email": "k.tinnefeld@googlemail.com"
},
{
"name": "Bryan Burgers",
"email": "bryan@burgers.io"
},
{
"name": "David Beitey",
"email": "david@davidjb.com"
},
{
"name": "Evan You",
"email": "yyou@google.com"
},
{
"name": "Zach Pomerantz",
"email": "zmp@umich.edu"
},
{
"name": "Chris Williams",
"email": "cwilliams88@gmail.com"
},
{
"name": "sudodoki",
"email": "smd.deluzion@gmail.com"
},
{
"name": "Mick Thompson",
"email": "dthompson@gmail.com"
},
{
"name": "Felix Rabe",
"email": "felix@rabe.io"
},
{
"name": "Michael Hayes",
"email": "michael@hayes.io"
},
{
"name": "Chris Dickinson",
"email": "christopher.s.dickinson@gmail.com"
},
{
"name": "Bradley Meck",
"email": "bradley.meck@gmail.com"
},
{
"name": "GeJ",
"email": "geraud@gcu.info"
},
{
"name": "Andrew Terris",
"email": "atterris@gmail.com"
},
{
"name": "Michael Nisi",
"email": "michael.nisi@gmail.com"
},
{
"name": "fengmk2",
"email": "fengmk2@gmail.com"
},
{
"name": "Adam Meadows",
"email": "adam.meadows@gmail.com"
},
{
"name": "Chulki Lee",
"email": "chulki.lee@gmail.com"
},
{
"name": "涓嶅洓",
"email": "busi.hyy@taobao.com"
},
{
"name": "dead_horse",
"email": "dead_horse@qq.com"
},
{
"name": "Kenan Yildirim",
"email": "kenan@kenany.me"
},
{
"name": "Laurie Voss",
"email": "git@seldo.com"
},
{
"name": "Rebecca Turner",
"email": "me@re-becca.org"
},
{
"name": "Hunter Loftis",
"email": "hunter@hunterloftis.com"
},
{
"name": "Peter Richardson",
"email": "github@zoomy.net"
},
{
"name": "Jussi Kalliokoski",
"email": "jussi.kalliokoski@gmail.com"
},
{
"name": "Filip Weiss",
"email": "me@fiws.net"
},
{
"name": "Timo Wei脽",
"email": "timoweiss@Timo-MBP.local"
},
{
"name": "Christopher Hiller",
"email": "chiller@badwing.com"
},
{
"name": "J茅r茅my Lal",
"email": "kapouer@melix.org"
},
{
"name": "Anders Janmyr",
"email": "anders@janmyr.com"
},
{
"name": "Chris Meyers",
"email": "chris.meyers.fsu@gmail.com"
},
{
"name": "Ludwig Magnusson",
"email": "ludwig@mediatool.com"
},
{
"name": "Wout Mertens",
"email": "Wout.Mertens@gmail.com"
},
{
"name": "Nick Santos",
"email": "nick@medium.com"
},
{
"name": "Terin Stock",
"email": "terinjokes@gmail.com"
},
{
"name": "Faiq Raza",
"email": "faiqrazarizvi@gmail.com"
},
{
"name": "Thomas Torp",
"email": "thomas@erupt.no"
},
{
"name": "Sam Mikes",
"email": "smikes@cubane.com"
},
{
"name": "Mat Tyndall",
"email": "mat.tyndall@gmail.com"
},
{
"name": "Tauren Mills",
"email": "tauren@sportzing.com"
},
{
"name": "Ron Martinez",
"email": "ramartin.net@gmail.com"
},
{
"name": "Kazuhito Hokamura",
"email": "k.hokamura@gmail.com"
},
{
"name": "Tristan Davies",
"email": "github@tristan.io"
},
{
"name": "David Volm",
"email": "david@volminator.com"
},
{
"name": "Lin Clark",
"email": "lin.w.clark@gmail.com"
},
{
"name": "Ben Page",
"email": "bpage@dewalch.com"
},
{
"name": "Jeff Jo",
"email": "jeffjo@squareup.com"
},
{
"name": "martinvd",
"email": "martinvdpub@gmail.com"
},
{
"name": "Mark J. Titorenko",
"email": "nospam-github.com@titorenko.net"
},
{
"name": "Oddur Sigurdsson",
"email": "oddurs@gmail.com"
},
{
"name": "Eric Mill",
"email": "eric@konklone.com"
},
{
"name": "Gabriel Barros",
"email": "descartavel1@gmail.com"
},
{
"name": "KevinSheedy",
"email": "kevinsheedy@gmail.com"
},
{
"name": "Aleksey Smolenchuk",
"email": "aleksey@uber.com"
},
{
"name": "Ed Morley",
"email": "emorley@mozilla.com"
},
{
"name": "Blaine Bublitz",
"email": "blaine@iceddev.com"
},
{
"name": "Andrey Fedorov",
"email": "anfedorov@gmail.com"
},
{
"name": "Daijiro Wachi",
"email": "daijiro.wachi@gmail.com"
},
{
"name": "Luc Thevenard",
"email": "lucthevenard@gmail.com"
},
{
"name": "Aria Stewart",
"email": "aredridel@nbtsc.org"
},
{
"name": "Charlie Rudolph",
"email": "charles.w.rudolph@gmail.com"
},
{
"name": "Vladimir Rutsky",
"email": "rutsky@users.noreply.github.com"
},
{
"name": "Isaac Murchie",
"email": "isaac@saucelabs.com"
},
{
"name": "Marcin Wosinek",
"email": "marcin.wosinek@gmail.com"
},
{
"name": "David Marr",
"email": "davemarr@gmail.com"
},
{
"name": "Bryan English",
"email": "bryan@bryanenglish.com"
},
{
"name": "Anthony Zotti",
"email": "amZotti@users.noreply.github.com"
},
{
"name": "Karl Horky",
"email": "karl.horky@gmail.com"
},
{
"name": "Jordan Harband",
"email": "ljharb@gmail.com"
},
{
"name": "Gu冒laugur Stef謾n Egilsson",
"email": "gulli@kolibri.is"
},
{
"name": "Helge Skogly Holm",
"email": "helge.holm@gmail.com"
},
{
"name": "Peter A. Shevtsov",
"email": "petr.shevtsov@gmail.com"
},
{
"name": "Alain Kalker",
"email": "a.c.kalker@gmail.com"
},
{
"name": "Bryant Williams",
"email": "b.n.williams@gmail.com"
},
{
"name": "Jonas Weber",
"email": "github@jonasw.de"
},
{
"name": "Tim Whidden",
"email": "twhid@twhid.com"
},
{
"name": "Andreas",
"email": "functino@users.noreply.github.com"
},
{
"name": "Karolis Narkevicius",
"email": "karolis.n@gmail.com"
},
{
"name": "Adrian Lynch",
"email": "adi_ady_ade@hotmail.com"
},
{
"name": "Richard Littauer",
"email": "richard.littauer@gmail.com"
},
{
"name": "Oli Evans",
"email": "oli@zilla.org.uk"
},
{
"name": "Matt Brennan",
"email": "mattyb1000@gmail.com"
},
{
"name": "Jeff Barczewski",
"email": "jeff.barczewski@gmail.com"
},
{
"name": "Danny Fritz",
"email": "dannyfritz@gmail.com"
},
{
"name": "Takaya Kobayashi",
"email": "jigsaw@live.jp"
},
{
"name": "Ra`Shaun Stovall",
"email": "rashaunstovall@gmail.com"
},
{
"name": "Julien Meddah",
"email": "julien.meddah@deveryware.com"
},
{
"name": "Michiel Sikma",
"email": "michiel@wedemandhtml.com"
},
{
"name": "Jakob Krigovsky",
"email": "jakob.krigovsky@gmail.com"
},
{
"name": "Charmander",
"email": "~@charmander.me"
},
{
"name": "Erik Wienhold",
"email": "git@ewie.name"
},
{
"name": "James Butler",
"email": "james.butler@sandfox.co.uk"
},
{
"name": "Kevin Kragenbrink",
"email": "kevin@gaikai.com"
},
{
"name": "Arnaud Rinquin",
"email": "rinquin.arnaud@gmail.com"
},
{
"name": "Mike MacCana",
"email": "mike.maccana@gmail.com"
},
{
"name": "Antti Mattila",
"email": "anttti@fastmail.fm"
},
{
"name": "laiso",
"email": "laiso@lai.so"
},
{
"name": "Matt Zorn",
"email": "zornme@gmail.com"
},
{
"name": "Kyle Mitchell",
"email": "kyle@kemitchell.com"
},
{
"name": "Jeremiah Senkpiel",
"email": "fishrock123@rocketmail.com"
},
{
"name": "Michael Klein",
"email": "mischkl@users.noreply.github.com"
},
{
"name": "Simen Bekkhus",
"email": "sbekkhus91@gmail.com"
},
{
"name": "Victor",
"email": "victor.shih@gmail.com"
},
{
"name": "thefourtheye",
"email": "thechargingvolcano@gmail.com"
},
{
"name": "Clay Carpenter",
"email": "claycarpenter@gmail.com"
},
{
"name": "bangbang93",
"email": "bangbang93@163.com"
},
{
"name": "Nick Malaguti",
"email": "nmalaguti@palantir.com"
},
{
"name": "Cedric Nelson",
"email": "cedric.nelson@gmail.com"
},
{
"name": "Kat March謾n",
"email": "kzm@sykosomatic.org"
},
{
"name": "Andrew",
"email": "talktome@aboutandrew.co.uk"
},
{
"name": "Eduardo Pinho",
"email": "enet4mikeenet@gmail.com"
},
{
"name": "Rachel Hutchison",
"email": "rhutchix@intel.com"
},
{
"name": "Ryan Temple",
"email": "ryantemple145@gmail.com"
},
{
"name": "Eugene Sharygin",
"email": "eush77@gmail.com"
},
{
"name": "James Talmage",
"email": "james@talmage.io"
},
{
"name": "jane arc",
"email": "jane@uber.com"
},
{
"name": "Joseph Dykstra",
"email": "josephdykstra@gmail.com"
},
{
"name": "Andrew Crites",
"email": "ajcrites@gmail.com"
},
{
"name": "Joshua Egan",
"email": "josh-egan@users.noreply.github.com"
},
{
"name": "Carlos Alberto",
"email": "euprogramador@gmail.com"
},
{
"name": "Thomas Cort",
"email": "thomasc@ssimicro.com"
},
{
"name": "Thaddee Tyl",
"email": "thaddee.tyl@gmail.com"
},
{
"name": "Steve Klabnik",
"email": "steve@steveklabnik.com"
},
{
"name": "Andrew Murray",
"email": "radarhere@gmail.com"
},
{
"name": "Stephan B枚nnemann",
"email": "stephan@excellenteasy.com"
},
{
"name": "Kyle M. Tarplee",
"email": "kyle.tarplee@numerica.us"
},
{
"name": "Derek Peterson",
"email": "derekpetey@gmail.com"
},
{
"name": "Greg Whiteley",
"email": "greg.whiteley@atomos.com"
},
{
"name": "murgatroid99",
"email": "mlumish@google.com"
},
{
"name": "Marcin Cieslak",
"email": "saper@saper.info"
},
{
"name": "Jo茫o Reis",
"email": "reis@janeasystems.com"
},
{
"name": "Matthew Hasbach",
"email": "hasbach.git@gmail.com"
},
{
"name": "Jon Hall",
"email": "jon_hall@outlook.com"
},
{
"name": "Anna Henningsen",
"email": "sqrt@entless.org"
},
{
"name": "James Treworgy",
"email": "jamietre@gmail.com"
},
{
"name": "James Hartig",
"email": "james@levenlabs.com"
},
{
"name": "Stephanie Snopek",
"email": "stephaniesnopek@gmail.com"
},
{
"name": "Kent C. Dodds",
"email": "kent@doddsfamily.us"
},
{
"name": "Aaron Krause",
"email": "aaronjkrause@gmail.com"
},
{
"name": "Daniel K O`Leary",
"email": "daniel@dko.io"
},
{
"name": "fscherwi",
"email": "fscherwi@users.noreply.github.com"
},
{
"name": "Thomas Reggi",
"email": "thomas@reggi.com"
},
{
"name": "Thomas Michael McTiernan",
"email": "thomasmctiernan@gmail.com"
},
{
"name": "Jason Kurian",
"email": "JaKXz@users.noreply.github.com"
},
{
"name": "Sebastiaan Deckers",
"email": "seb@ninja.sg"
},
{
"name": "lady3bean",
"email": "lady3bean@users.noreply.github.com"
},
{
"name": "Tomi Carr",
"email": "TaMe3971@users.noreply.github.com"
},
{
"name": "Juan Caicedo",
"email": "retiredcanadianpoet@gmail.com"
},
{
"name": "Ashley Williams",
"email": "ashley@npmjs.com"
},
{
"name": "Andrew Marcinkevi膷ius",
"email": "andrew.web@ifdattic.com"
},
{
"name": "Jorrit Schippers",
"email": "jorrit@ncode.nl"
},
{
"name": "Alex Lukin",
"email": "alex.lukin@softgrad.com"
},
{
"name": "Aria Stewart",
"email": "aredridel@dinhe.net"
},
{
"name": "Tiago Rodrigues",
"email": "tmcrodrigues@gmail.com"
},
{
"name": "Tim",
"email": "tim-github@baverstock.org.uk"
},
{
"name": "Nick Williams",
"email": "WickyNilliams@users.noreply.github.com"
},
{
"name": "Louis Larry",
"email": "louis.larry@gmail.com"
},
{
"name": "Ben Gotow",
"email": "bengotow@gmail.com"
},
{
"name": "Jakub Gieryluk",
"email": "jakub.g.opensource@gmail.com"
},
{
"name": "Kevin Lorenz",
"email": "mail@kevinlorenz.com"
},
{
"name": "Martin von Gagern",
"email": "Martin.vGagern@gmx.net"
},
{
"name": "Eymen Gunay",
"email": "eymen@egunay.com"
},
{
"name": "Martin Ek",
"email": "mail@ekmartin.com"
},
{
"name": "Rafa艂 Pocztarski",
"email": "r.pocztarski@gmail.com"
},
{
"name": "Mark Reeder",
"email": "mreeder@uber.com"
},
{
"name": "Chris Rebert",
"email": "github@chrisrebert.com"
},
{
"name": "Scott Addie",
"email": "tobias.addie@gmail.com"
},
{
"name": "Jeff McMahan",
"email": "jeffrey.lee.mcmahan@gmail.com"
},
{
"name": "Tim Krins",
"email": "timkrins@gmail.com"
},
{
"name": "Hal Henke",
"email": "halhenke@gmail.com"
},
{
"name": "Julian Simioni",
"email": "julian@simioni.org"
},
{
"name": "Jimb Esser",
"email": "jimb@yahoo-inc.com"
},
{
"name": "Alexis Campailla",
"email": "alexis@janeasystems.com"
},
{
"name": "Chris Chua",
"email": "chris.sirhc@gmail.com"
},
{
"name": "Beau Gunderson",
"email": "beau@beaugunderson.com"
},
{
"name": "Dave Galbraith",
"email": "dave@jut.io"
},
{
"name": "s100",
"email": "shughes1@uk.ibm.com"
},
{
"name": "Sergey Simonchik",
"email": "sergey.simonchik@jetbrains.com"
},
{
"name": "Vanja Radovanovi膰",
"email": "elvanja@gmail.com"
},
{
"name": "Jonathan Persson",
"email": "persson.jonathan@gmail.com"
},
{
"name": "Vedat Mahir YILMAZ",
"email": "mahir@vedatmahir.com"
},
{
"name": "Samuel Reed",
"email": "samuel.trace.reed@gmail.com"
},
{
"name": "Rafa艂 Legi臋d藕",
"email": "rafal.legiedz@gmail.com"
},
{
"name": "Jan Sch盲r",
"email": "jscissr@gmail.com"
},
{
"name": "Xcat Liu",
"email": "xcatliu@gmail.com"
},
{
"name": "harryh",
"email": "Aourin@users.noreply.github.com"
},
{
"name": "Prayag Verma",
"email": "prayag.verma@gmail.com"
},
{
"name": "Neil Kistner",
"email": "neil.kistner@gmail.com"
},
{
"name": "Zoujie Wzj",
"email": "zoujie.wzj@alibaba-inc.com"
},
{
"name": "Ryan Hendrickson",
"email": "ryan.hendrickson@alum.mit.edu"
},
{
"name": "Arturo Coronel",
"email": "aoitsu3@gmail.com"
},
{
"name": "Hutson Betts",
"email": "hbetts@factset.com"
},
{
"name": "Lewis Cowper",
"email": "lewis.cowper@googlemail.com"
},
{
"name": "Adam Byrne",
"email": "misterbyrne@gmail.com"
},
{
"name": "Ifeanyi Oraelosi",
"email": "ifeanyioraelosi@gmail.com"
},
{
"name": "Robert Ludwig",
"email": "rob.ludwig@rideamigos.com"
},
{
"name": "Chris Warren",
"email": "chris@ixalon.net"
},
{
"name": "Scott Plumlee",
"email": "scott@plumlee.org"
},
{
"name": "Daniel Pedersen",
"email": "daniel@scandinav.se"
},
{
"name": "rhgb",
"email": "kaiserdaemon@gmail.com"
},
{
"name": "doug.wade",
"email": "doug.wade@redfin.com"
},
{
"name": "Zac",
"email": "zdoege@gm.slc.edu"
},
{
"name": "GriffinSchneider",
"email": "griffinschneider@gmail.com"
},
{
"name": "Andres Kalle",
"email": "mjomble@gmail.com"
},
{
"name": "thefourtheye",
"email": "thefourtheye@users.noreply.github.com"
},
{
"name": "Yael",
"email": "yaelz@users.noreply.github.com"
},
{
"name": "Yann Odeyer",
"email": "yann@odeyer.com"
},
{
"name": "James Monger",
"email": "jameskmonger@hotmail.co.uk"
},
{
"name": "Thomas Hallock",
"email": "thomas@1stdibs.com"
},
{
"name": "Paul Irish",
"email": "paul.irish@gmail.com"
},
{
"name": "Paul O`Leary McCann",
"email": "polm@dampfkraft.com"
},
{
"name": "Francis Gulotta",
"email": "wizard@roborooter.com"
},
{
"name": "Felix Rieseberg",
"email": "felix@felixrieseberg.com"
},
{
"name": "Glen Mailer",
"email": "glenjamin@gmail.com"
},
{
"name": "Federico Brigante",
"email": "bfred-it@users.noreply.github.com"
},
{
"name": "Steve Mao",
"email": "maochenyan@gmail.com"
},
{
"name": "Anna Henningsen",
"email": "anna@addaleax.net"
},
{
"name": "Rachel Evans",
"email": "git@rve.org.uk"
},
{
"name": "Sam Minnee",
"email": "sam@silverstripe.com"
},
{
"name": "Zirak",
"email": "zirakertan@gmail.com"
},
{
"name": "Daniel Lupu",
"email": "lupu.daniel.f@gmail.com"
},
{
"name": "Gianluca Casati",
"email": "fibo@users.noreply.github.com"
},
{
"name": "Andr茅 Herculano",
"email": "andresilveirah@gmail.com"
},
{
"name": "Wyatt Preul",
"email": "wpreul@gmail.com"
},
{
"name": "Myles Borins",
"email": "mborins@us.ibm.com"
},
{
"name": "Elliot Lee",
"email": "github.public@intelliot.com"
},
{
"name": "Dmitry Kirilyuk",
"email": "gk.joker@gmail.com"
},
{
"name": "Aaron Tribou",
"email": "aaron.tribou@gmail.com"
},
{
"name": "Tapani Moilanen",
"email": "moilanen.tapani@gmail.com"
},
{
"name": "Han Seoul-Oh",
"email": "laughinghan@gmail.com"
},
{
"name": "Aleksey Shvayka",
"email": "shvaikalesh@gmail.com"
},
{
"name": "Emma Ramirez",
"email": "ramirez.emma.g@gmail.com"
},
{
"name": "Julian Duque",
"email": "julianduquej@gmail.com"
},
{
"name": "Simon MacDonald",
"email": "simon.macdonald@gmail.com"
},
{
"name": "Adam Stankiewicz",
"email": "sheerun@sher.pl"
},
{
"name": "Gregers Gram Rygg",
"email": "gregers.gram.rygg@finn.no"
},
{
"name": "Peter Dave Hello",
"email": "hsu@peterdavehello.org"
},
{
"name": "Jordan Klassen",
"email": "forivall@gmail.com"
},
{
"name": "Jason Palmer",
"email": "jason@jason-palmer.com"
},
{
"name": "Michael Hart",
"email": "michael.hart.au@gmail.com"
},
{
"name": "Sasha Koss",
"email": "koss@nocorp.me"
},
{
"name": "David Emmerson",
"email": "david.emmerson@gmail.com"
},
{
"name": "Christophe Hurpeau",
"email": "christophe@hurpeau.com"
},
{
"name": "Daniel Paz-Soldan",
"email": "daniel.pazsoldan@gmail.com"
},
{
"name": "Sakthipriyan Vairamani",
"email": "thechargingvolcano@gmail.com"
},
{
"name": "Zach Renner",
"email": "zarenner@microsoft.com"
},
{
"name": "Christopher Hiller",
"email": "boneskull@boneskull.com"
},
{
"name": "legodude17",
"email": "legodudejb@gmail.com"
},
{
"name": "Andrew Meyer",
"email": "andrewm.bpi@gmail.com"
},
{
"name": "Michael Jasper",
"email": "mdjasper@gmail.com"
},
{
"name": "Max",
"email": "contact@mstoiber.com"
},
{
"name": "Szymon Nowak",
"email": "szimek@gmail.com"
},
{
"name": "Jason Karns",
"email": "jason.karns@gmail.com"
},
{
"name": "Lucas Holmquist",
"email": "lholmqui@redhat.com"
},
{
"name": "Ionic膬 Biz膬u",
"email": "bizauionica@gmail.com"
},
{
"name": "Alex Chesters",
"email": "AlexChesters@users.noreply.github.com"
},
{
"name": "Robert Gay",
"email": "robert.gay@redfin.com"
},
{
"name": "Steven",
"email": "stevokk@hotmail.com"
},
{
"name": "Tim Caswell",
"email": "tim@creationix.com"
},
{
"name": "Anna Henningsen",
"email": "github@addaleax.net"
},
{
"name": "Kim R酶en",
"email": "kim@kimroen.com"
},
{
"name": "Douglas Wilson",
"email": "dougwilson@live.com"
},
{
"name": "Mike Engel",
"email": "mike@mike-engel.com"
},
{
"name": "baderbuddy",
"email": "baderbuddy@gmail.com"
},
{
"name": "Alex Jordan",
"email": "alex@strugee.net"
},
{
"name": "Ville Lahdenvuo",
"email": "tuhoojabotti@gmail.com"
},
{
"name": "Natalie Wolfe",
"email": "nwolfe@newrelic.com"
},
{
"name": "Andrew Schmadel",
"email": "aschmadel@learningobjects.com"
},
{
"name": "Jonah Moses",
"email": "jonahkmoses@gmail.com"
},
{
"name": "Daijir艒 Wachi",
"email": "daijiro.wachi@gmail.com"
},
{
"name": "Dmitry Litvinchenko",
"email": "karaliti@gmail.com"
},
{
"name": "chocolateboy",
"email": "chocolate@cpan.org"
},
{
"name": "Henry Zhu",
"email": "hi@henryzoo.com"
},
{
"name": "Nate Goldman",
"email": "ungoldman@gmail.com"
},
{
"name": "Ted Yavuzkurt",
"email": "hello@TedY.io"
},
{
"name": "Arseniy Maximov",
"email": "localhost@kern0.ru"
},
{
"name": "Joshua Bennett",
"email": "legodude17@users.noreply.github.com"
},
{
"name": "Evgeny Kulikov",
"email": "beyondcompute@users.noreply.github.com"
},
{
"name": "小瀉芯脅芯褉芯寫邪 袧懈瀉懈褌邪 袗薪寫褉械械脅懈褔",
"email": "chalkerx@gmail.com"
},
{
"name": "Carol",
"email": "carol.nichols@gmail.com",
"url": "Nichols || Goulding"
},
{
"name": "Jarid Margolin",
"email": "jaridmargolin@gmail.com"
},
{
"name": "David Cook",
"email": "divergentdave@gmail.com"
},
{
"name": "Brian Dukes",
"email": "bdukes@engagesoftware.com"
},
{
"name": "J F",
"email": "git@twopointzero.us"
},
{
"name": "Pavlo Liulia",
"email": "pavloblack@hotmail.com"
},
{
"name": "J謾n Dzurek",
"email": "famousgarkin@outlook.com"
},
{
"name": "Lucas Theisen",
"email": "ltheisen@mitre.org"
},
{
"name": "Mike Sherov",
"email": "mike.sherov@gmail.com"
},
{
"name": "鍚涘畾璋旂殑鐚�",
"email": "hh_2013@foxmail.com"
},
{
"name": "Pawe艂 Lula",
"email": "pavloblack@hotmail.com"
},
{
"name": "Jakob Krigovsky",
"email": "jakob@krigovsky.com"
},
{
"name": "George Rawlinson",
"email": "george@rawlinson.net.nz"
},
{
"name": "Jack Nagel",
"email": "jacknagel@users.noreply.github.com"
},
{
"name": "Andreas Kohn",
"email": "andreas.kohn@gmail.com"
},
{
"name": "Jason Wohlgemuth",
"email": "jhwohlgemuth@users.noreply.github.com"
},
{
"name": "Ryan Graham",
"email": "r.m.graham@gmail.com"
},
{
"name": "Hirse",
"email": "jan.pilzer@gmx.de"
},
{
"name": "Colin Rotherham",
"email": "work@colinr.com"
},
{
"name": "Aki",
"email": "hi@akiro.se"
},
{
"name": "Emily Marigold Klassen",
"email": "forivall@gmail.com"
},
{
"name": "Ramana Venkata",
"email": "idlike2dream@gmail.com"
},
{
"name": "kierendixon",
"email": "knitesoulja@hotmail.com"
},
{
"name": "R謾cz Tibor Zolt謾n",
"email": "racztiborzoltan@gmail.com"
},
{
"name": "Guangcong Luo",
"email": "guangcongluo@gmail.com"
},
{
"name": "Steven",
"email": "steven@ceriously.com"
},
{
"name": "Jan Pilzer",
"email": "jan.pilzer@gmx.de"
},
{
"name": "Leonard Martin",
"email": "leonard.martin@gmail.com"
},
{
"name": "Teddy Katz",
"email": "teddy.katz@gmail.com"
},
{
"name": "Simon Legg",
"email": "leggsimon@gmail.com"
},
{
"name": "Kin Lum",
"email": "kenneth.kin.lum@gmail.com"
},
{
"name": "dax",
"email": "guido.dassori@gmail.com"
},
{
"name": "Jo啪e Mlakar",
"email": "JozeM@ixtlan-team.si"
},
{
"name": "happylynx",
"email": "happylynx@users.noreply.github.com"
},
{
"name": "Dominic Watson",
"email": "intellix@users.noreply.github.com"
},
{
"name": "Enrico Weigelt, metux IT consult",
"email": "enrico.weigelt@gr13.net"
},
{
"name": "Brian Beck",
"email": "exogen@gmail.com"
},
{
"name": "Ramana Venkata",
"email": "vramana@users.noreply.github.com"
},
{
"name": "mmkal",
"email": "misha.kaletsky@gmail.com"
},
{
"name": "Andrew Schmadel",
"email": "schmod@users.noreply.github.com"
},
{
"name": "AJ Jordan",
"email": "alex@strugee.net"
},
{
"name": "Mark Banner",
"email": "standard8@mozilla.com"
},
{
"name": "Richard Simko",
"email": "richardsimko@users.noreply.github.com"
},
{
"name": "Sanketh Katta",
"email": "sankethkatta@gmail.com"
},
{
"name": "Tim Needham",
"email": "tim.needham@wmfs.net"
},
{
"name": "leonardo rojas",
"email": "leonardo.rojas@shopify.com"
},
{
"name": "Mark Peter Fejes",
"email": "fejes.mark@gmail.com"
}
],
"man": [
"/Users/zkat/Documents/code/npm/man/man1/npm-access.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-adduser.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-bin.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-bugs.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-build.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-bundle.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-cache.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-completion.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-config.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-dedupe.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-deprecate.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-dist-tag.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-docs.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-doctor.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-edit.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-explore.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-help-search.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-help.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-init.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-install-test.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-install.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-link.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-logout.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-ls.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-outdated.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-owner.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-pack.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-ping.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-prefix.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-prune.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-publish.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-README.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-rebuild.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-repo.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-restart.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-root.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-run-script.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-search.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-shrinkwrap.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-star.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-stars.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-start.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-stop.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-team.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-test.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-uninstall.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-unpublish.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-update.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-version.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-view.1",
"/Users/zkat/Documents/code/npm/man/man1/npm-whoami.1",
"/Users/zkat/Documents/code/npm/man/man1/npm.1",
"/Users/zkat/Documents/code/npm/man/man1/npx.1",
"/Users/zkat/Documents/code/npm/man/man5/npm-folders.5",
"/Users/zkat/Documents/code/npm/man/man5/npm-global.5",
"/Users/zkat/Documents/code/npm/man/man5/npm-json.5",
"/Users/zkat/Documents/code/npm/man/man5/npm-package-locks.5",
"/Users/zkat/Documents/code/npm/man/man5/npm-shrinkwrap.json.5",
"/Users/zkat/Documents/code/npm/man/man5/npmrc.5",
"/Users/zkat/Documents/code/npm/man/man5/package-lock.json.5",
"/Users/zkat/Documents/code/npm/man/man5/package.json.5",
"/Users/zkat/Documents/code/npm/man/man7/npm-coding-style.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-config.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-developers.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-disputes.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-index.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-orgs.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-registry.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-scope.7",
"/Users/zkat/Documents/code/npm/man/man7/npm-scripts.7",
"/Users/zkat/Documents/code/npm/man/man7/removing-npm.7",
"/Users/zkat/Documents/code/npm/man/man7/semver.7"
],
"gitHead": "75b462c19ea16ef0d7f943f94ff4d255695a5c0d",
"_id": "npm@5.3.0",
"_npmVersion": "5.3.0",
"_nodeVersion": "8.1.2",
"_npmUser": {
"name": "zkat",
"email": "kat@sykosomatic.org"
},
"dist": {
"integrity": "sha512-ZJsOWVJ25E2C5Qedf4w9ePIv5hrPCdDIsHhq89tRxSJCqyIfDAMh0KoU9xeTu7yHT9ZrxPF7mopq1TCWxtMfkw==",
"shasum": "e2ae85ef09d53f7f570a05578692899bf7879f17",
"tarball": "https://registry.npmjs.org/npm/-/npm-5.3.0.tgz"
},
"maintainers": [
{
"email": "ceejceej@gmail.com",
"name": "ceejbot"
},
{
"email": "kat@sykosomatic.org",
"name": "zkat"
},
{
"email": "me@re-becca.org",
"name": "iarna"
},
{
"email": "i@izs.me",
"name": "isaacs"
}
],
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/npm-5.3.0.tgz_1500009133941_0.17611657408997416"
}
}
這個會比較大,看一個簡單的縮影:
{
"name": "algorithms-combined-js",
"version": "1.0.1",
"description": "algorithms for combined",
"main": "libs/index.js",
"scripts": {
"build":"babel src -d libs",
"prepublish":"npm run build",
"test": "echo "Error: no test specified" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/rawbin-/algorithms-combined-js.git"
},
"keywords": [
"algorithms",
"javascript",
"combination",
"arrangement"
],
"author": "rawbin-",
"license": "ISC",
"bugs": {
"url": "https://github.com/rawbin-/algorithms-combined-js/issues"
},
"homepage": "https://github.com/rawbin-/algorithms-combined-js#readme",
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-stage-0": "^6.16.0"
},
"dependencies": {
"underscore": "^1.8.3"
}
}
版本
作為包管理工具,最為重要的就是版本管理,版本管理主要在package.json裡面體現在一下幾種書寫方式:
- 使用> >= < <= = 和 ||來組合具體範圍 1.2.7 || >=1.2.9 <2.0.0
- 使用-來指定範圍 1.2.3 – 2.3.4 等於 >=1.2.3 <=2.3.4
- 使用x X * 或者 留空 來指定版本通配 1.x 等於 >=1.0.0 <2.0.0
- 使用~來指定最鄰近右邊的大版本範圍,放開小版本的變更
~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x)
~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x)
~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x)
~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x) - 使用^來限定最左邊的大版本
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
script
scripts 配置使用npm能執行的指令碼的命令,npm 允許在package.json檔案裡面,使用scripts欄位定義指令碼命令。這個欄位的內容比較豐富,也經常用到:
- prepublish publish postpublish
- preinstall install postinstall
- preuninstall uninstall postuninstall
- preversion version postversion
- pretest test posttest
- prestop stop poststop
- prestart start poststart
- prerestart restart postrestart
任意命令的執行方式為npm run scriptname,特殊的start stop restart test 可以直接用npm scriptname來執行,
script部分可以參考看:http://www.ruanyifeng.com/blo…
常用命令
- npm i xxx -g === npm install xxx –global
- npm i xxx -S === npm install xxx –save
- npm i xxx -D === npm install xxx –save-dev
- npm un xxx === npm uninstall xxx
- npm ls /檢視安裝的包
- npm clean –force //強制清理安裝的包
- npm publish xxx
- npm unpublish xxx
設定源
有的時候可能會出現安裝一些包的時候特別慢,所以需要設定一下國內的源,最為通用的就是taobao的源,也可是使用其配置的npm別名cnpm,只不過是npm直接把源設定為國內的淘寶源,使用方法:
//設定別名,注意區分自己的終端是bash還是zsh
alias cnpm="npm --registry=https://registry.npm.taobao.org
--cache=$HOME/.npm/.cache/cnpm
--disturl=https://npm.taobao.org/dist
--userconfig=$HOME/.cnpmrc"
# Or alias it in .bashrc or .zshrc
$ echo `
#alias for cnpm
alias cnpm="npm --registry=https://registry.npm.taobao.org
--cache=$HOME/.npm/.cache/cnpm
--disturl=https://npm.taobao.org/dist
--userconfig=$HOME/.cnpmrc"` >> ~/.zshrc && source ~/.zshrc
臨時性的:
- npm install -g cnpm –registry=https://registry.npm.taobao.org
- npm config set registry http://registry.cnpmjs.org
//配置指向源 npm config set registry https://registry.npm.taobao.org
永久性:
- registry =https://registry.npm.taobao.org //寫入配置檔案~/.npmrc