Pengenalan kepada penggunaan NPM
NPM ialah alat pengurusan pakej yang dipasang bersama-sama dengan NodeJS Ia boleh menyelesaikan banyak masalah dalam penggunaan kod NodeJS adalah seperti berikut:
Benarkan pengguna Muat turun ketiga. -pakej parti yang ditulis oleh orang lain daripada pelayan NPM dan menggunakannya secara tempatan.
Membenarkan pengguna memuat turun dan memasang program baris arahan yang ditulis oleh orang lain daripada pelayan NPM untuk kegunaan tempatan.
Membenarkan pengguna memuat naik pakej atau program baris arahan yang mereka tulis ke pelayan NPM untuk digunakan oleh orang lain.
Memandangkan versi baharu nodejs telah menyepadukan npm, npm juga telah dipasang sebelum ini. Anda juga boleh menguji sama ada pemasangan berjaya dengan memasukkan "npm -v" . Perintahnya adalah seperti berikut. Gesaan versi muncul untuk menunjukkan pemasangan yang berjaya:
$ npm -v 2.3.0
Jika anda memasang versi lama npm, anda boleh menaik tarafnya dengan mudah melalui arahan npm:
$ sudo npm install npm -g /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js npm@2.14.2 /usr/local/lib/node_modules/npm
Jika ia Tetingkap Sistem boleh menggunakan arahan berikut:
npm install npm -g
Gunakan arahan npm untuk memasang modul
npm memasang format sintaks modul Node.js adalah sebagai berikut:
$ npm install <Module Name>
Dalam contoh berikut, kami menggunakan Perintah npm memasang modul rangka kerja web Node.js yang biasa digunakan express:
$ npm install express
Selepas pemasangan, pakej ekspres diletakkan dalam direktori node_modules di bawah direktori projek, jadi dalam kod anda hanya perlu gunakan require('express') tanpa menyatakan laluan pakej pihak ketiga.
var express = require('express');
Pemasangan global dan pemasangan tempatan
pemasangan pakej npm terbahagi kepada dua jenis: pemasangan tempatan (tempatan) dan pemasangan global (global) Berdasarkan baris arahan, perbezaannya Hanya tanpa -g, contohnya
npm install express # 本地安装 npm install express -g # 全局安装
Jika ralat berikut berlaku:
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
Penyelesaiannya ialah:
$ npm config set proxy null
Pemasangan setempat
1. Letakkan pakej pemasangan di bawah ./node_modules (direktori tempat perintah npm dijalankan).
2. Pakej yang dipasang secara tempatan boleh diperkenalkan melalui require().
Pemasangan global
1. Letakkan pakej pemasangan di bawah /usr/local atau direktori pemasangan nod anda.
2. Boleh digunakan terus dalam baris arahan.
Jika anda ingin mempunyai fungsi kedua-duanya, anda perlu memasangnya di dua tempat atau gunakan pautan npm.
Seterusnya kami menggunakan kaedah global untuk memasang ekspres
$ npm install express -g
Proses pemasangan mengeluarkan kandungan berikut. Baris pertama mengeluarkan nombor versi dan lokasi pemasangan modul.
express@4.13.3 node_modules/express ├── escape-html@1.0.2 ├── range-parser@1.0.2 ├── merge-descriptors@1.0.0 ├── array-flatten@1.1.1 ├── cookie@0.1.3 ├── utils-merge@1.0.0 ├── parseurl@1.3.0 ├── cookie-signature@1.0.6 ├── methods@1.1.1 ├── fresh@0.3.0 ├── vary@1.0.1 ├── path-to-regexp@0.1.7 ├── content-type@1.0.1 ├── etag@1.7.0 ├── serve-static@1.10.0 ├── content-disposition@0.5.0 ├── depd@1.0.1 ├── qs@4.0.0 ├── finalhandler@0.4.0 (unpipe@1.0.0) ├── on-finished@2.3.0 (ee-first@1.1.1) ├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1) ├── debug@2.2.0 (ms@0.7.1) ├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6) ├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6) └── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)
Anda boleh menggunakan arahan berikut untuk melihat semua modul yang dipasang secara global:
$ npm ls -g
Gunakan package.json
package.json terletak dalam direktori modul, gunakan Digunakan untuk menentukan sifat pakej. Seterusnya, mari kita lihat fail package.json bagi pakej ekspres, yang terletak di node_modules/express/package.json Kandungan:
{ "name": "express", "description": "Fast, unopinionated, minimalist web framework", "version": "4.13.3", "author": { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" }, "contributors": [ { "name": "Aaron Heckmann", "email": "aaron.heckmann+github@gmail.com" }, { "name": "Ciaran Jessup", "email": "ciaranj@gmail.com" }, { "name": "Douglas Christopher Wilson", "email": "doug@somethingdoug.com" }, { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" }, { "name": "Jonathan Ong", "email": "me@jongleberry.com" }, { "name": "Roman Shtylman", "email": "shtylman+expressjs@gmail.com" }, { "name": "Young Jae Sim", "email": "hanul@hanul.me" } ], "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/strongloop/express.git" }, "homepage": "http://expressjs.com/", "keywords": [ "express", "framework", "sinatra", "web", "rest", "restful", "router", "app", "api" ], "dependencies": { "accepts": "~1.2.12", "array-flatten": "1.1.1", "content-disposition": "0.5.0", "content-type": "~1.0.1", "cookie": "0.1.3", "cookie-signature": "1.0.6", "debug": "~2.2.0", "depd": "~1.0.1", "escape-html": "1.0.2", "etag": "~1.7.0", "finalhandler": "0.4.0", "fresh": "0.3.0", "merge-descriptors": "1.0.0", "methods": "~1.1.1", "on-finished": "~2.3.0", "parseurl": "~1.3.0", "path-to-regexp": "0.1.7", "proxy-addr": "~1.0.8", "qs": "4.0.0", "range-parser": "~1.0.2", "send": "0.13.0", "serve-static": "~1.10.0", "type-is": "~1.6.6", "utils-merge": "1.0.0", "vary": "~1.0.1" }, "devDependencies": { "after": "0.8.1", "ejs": "2.3.3", "istanbul": "0.3.17", "marked": "0.3.5", "mocha": "2.2.5", "should": "7.0.2", "supertest": "1.0.1", "body-parser": "~1.13.3", "connect-redis": "~2.4.1", "cookie-parser": "~1.3.5", "cookie-session": "~1.2.0", "express-session": "~1.11.3", "jade": "~1.11.0", "method-override": "~2.3.5", "morgan": "~1.6.1", "multiparty": "~4.1.2", "vhost": "~3.0.1" }, "engines": { "node": ">= 0.10.0" }, "files": [ "LICENSE", "History.md", "Readme.md", "index.js", "lib/" ], "scripts": { "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/", "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/", "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" }, "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e", "bugs": { "url": "https://github.com/strongloop/express/issues" }, "_id": "express@4.13.3", "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3", "_from": "express@*", "_npmVersion": "1.4.28", "_npmUser": { "name": "dougwilson", "email": "doug@somethingdoug.com" }, "maintainers": [ { "name": "tjholowaychuk", "email": "tj@vision-media.ca" }, { "name": "jongleberry", "email": "jonathanrichardong@gmail.com" }, { "name": "dougwilson", "email": "doug@somethingdoug.com" }, { "name": "rfeng", "email": "enjoyjava@gmail.com" }, { "name": "aredridel", "email": "aredridel@dinhe.net" }, { "name": "strongloop", "email": "callback@strongloop.com" }, { "name": "defunctzombie", "email": "shtylman@gmail.com" } ], "dist": { "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3", "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz" }, "directories": {}, "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz", "readme": "ERROR: No README data found!" }
Package.json Perihalan Harta
- .
nama - nama pakej.
versi - Nombor versi pakej.
penerangan - Penerangan pakej.
laman utama - url tapak web rasmi pakej.
pengarang - Nama pengarang pakej.
penyumbang - Nama penyumbang lain kepada pakej tersebut.
pergantungan - senarai pakej bergantung. Jika pakej bergantung tidak dipasang, npm akan memasang pakej bergantung secara automatik dalam direktori node_module.
repositori - Jenis tempat di mana kod pakej disimpan, ia boleh menjadi git atau svn, git boleh berada di Github.
utama - Medan utama ialah ID modul, yang merupakan penunjuk kepada item utama program anda. Iaitu, jika nama pakej anda adalah ekspres, dan pengguna memasangnya, maka memerlukan("express").
kata kunci - Kata kunci
Nyahpasang modul
Kita boleh menggunakan arahan berikut untuk menyahpasang modul Node.js.
$ npm uninstall express
Selepas menyahpasang, anda boleh pergi ke direktori /node_modules/ untuk menyemak sama ada pakej masih wujud, atau gunakan arahan berikut untuk menyemak:
$ npm ls
Kemas Kini Modul
Kita boleh mengemas kini modul menggunakan:
$ npm update express
Cari modul
Gunakan yang berikut untuk mencari modul:
$ npm search express
Buat Modul
Untuk mencipta modul, fail package.json adalah penting. Kita boleh menggunakan NPM untuk menjana fail package.json dan fail yang dijana mengandungi hasil asas.
$ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (node_modules) php # 模块名 version: (1.0.0) description: Node.js 测试模块(www.php.cn) # 描述 entry point: (index.js) test command: make test git repository: https://github.com/php/php.git # Github 地址 keywords: author: license: (ISC) About to write to ……/node_modules/package.json: # 生成地址 { "name": "php", "version": "1.0.0", "description": "Node.js 测试模块(www.php.cn)", …… } Is this ok? (yes) yes
Anda perlu memasukkan maklumat di atas mengikut situasi anda sendiri. Selepas memasukkan "ya" pada penghujung, fail package.json akan dijana.
Seterusnya kita boleh menggunakan arahan berikut untuk mendaftarkan pengguna dalam repositori npm (gunakan e-mel untuk mendaftar):
$ npm adduser Username: mcmohd Password: Email: (this IS public) mcmohd@gmail.com
Seterusnya kami menggunakan arahan berikut untuk menerbitkan modul:
$ npm publish
Jika anda telah melakukan langkah di atas dengan betul, anda boleh menggunakan npm untuk memasangnya seperti modul lain.
Nombor versi
Anda akan didedahkan kepada nombor versi apabila anda menggunakan NPM untuk memuat turun dan menerbitkan kod. NPM menggunakan nombor versi semantik untuk mengurus kod.
Nombor versi semantik dibahagikan kepada tiga digit: X.Y.Z, yang masing-masing mewakili nombor versi utama, nombor versi kecil dan nombor versi patch. Apabila kod berubah, nombor versi dikemas kini mengikut prinsip berikut.
Jika anda hanya membetulkan pepijat, anda perlu mengemas kini bit Z.
Jika fungsi baharu ditambah, tetapi ia serasi ke belakang, bit Y perlu dikemas kini.
Jika terdapat perubahan besar, ia akan menjadi tidak serasi ke belakang dan bit X perlu dikemas kini.
Dengan jaminan pada nombor versi ini, apabila mengisytiharkan kebergantungan pakej pihak ketiga, selain bergantung pada nombor versi tetap, anda juga boleh bergantung pada julat nombor versi tertentu. Sebagai contoh, "argv": "0.0.x" bermakna ia bergantung pada versi terkini argv siri 0.0.x.
Untuk semua kaedah penetapan julat nombor versi yang disokong oleh NPM, sila lihat dokumentasi rasmi.
Perintah NPM biasa
Selain bahagian yang diperkenalkan dalam bab ini, NPM juga menyediakan banyak fungsi, dan terdapat banyak medan berguna lain dalam package.json.
Selain melihat dokumentasi rasmi di npmjs.org/doc/, berikut ialah beberapa arahan NPM biasa.
NPM menyediakan banyak arahan, seperti pasang dan terbitkan Gunakan bantuan npm untuk melihat semua arahan.
NPM menyediakan banyak arahan, seperti
install
danpublish
, gunakannpm help
untuk melihat semua arahan.Gunakan
npm help <command>
untuk melihat bantuan terperinci bagi arahan, sepertinpm help install
.Gunakan
package.json
dalam direktori di mananpm install . -g
terletak untuk memasang program baris arahan semasa secara setempat dahulu, yang boleh digunakan untuk ujian tempatan sebelum dikeluarkan.Gunakan
npm update <package>
untuk mengemas kini modul yang sepadan dalam subdirektorinode_modules
dalam direktori semasa kepada versi terkini.Gunakan
npm update <package> -g
untuk mengemas kini program baris arahan yang sepadan yang dipasang secara global kepada versi terkini.Gunakan
npm cache clear
untuk mengosongkan cache setempat NPM, yang digunakan untuk menangani orang yang menggunakan nombor versi yang sama untuk mengeluarkan versi kod baharu.Gunakan
npm unpublish <package>@<version>
untuk menyahterbitkan versi kod yang telah anda terbitkan.