配色: 字号:
第四课 Nodejs包与npm
2020-12-22 | 阅:  转:  |  分享 
  
Node.js开发教师:王晓玲QQ:4260924邮箱:4260924@qq.com主要内容NPM介绍NPM常用命令Node.js中
的包包字段介绍NPM介绍NPM是什么?NPM:nodepackagemanager,通常称为node包管理器。顾名思义,它的主
要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。npm的背后,是基于couchdb的一个数据库,详细记录了每
个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加
专注于功能的开发。NPM介绍npm由三个独立的部分组成:1.网站2.注册表(registry)3.命令行工具(CLI)网站:
是开发者查找包(package)、设置参数以及管理npm使用体验的主要途径。(npm官网:https://npmjs.org/
)注册表:是一个巨大的数据库,保存了每个包(package)的信息。CLI:通过命令行或终端运行。开发者通过CLI与npm
打交道。NPM介绍用npm能够做什么?1.下载别人编写的第三方包到本地使用2.下载并安装别人编写的命令行程序到本地使用3.将自
己编写的包或命令行程序上传到NPM服务器供别人使用4.管理代码和代码依赖项的多个版本5.当底层代码更新时,很容易更新应用程序6.运
行包而不使用NPX下载7.组建虚拟团队(ORG)8.将代码限制到特定的开发人员..........................
......NPM介绍我们需要了解什么?1.npm的安装、卸载、升级、配置2.npm的使用:package的安装、卸载、升级、查看
、搜索、发布3.npm包的安装模式:本地vs全局4.package.json:包描述信息5.package版本:常见版本声明形
式NPM介绍npm包安装模式:node包的安装分两种:本地安装、全局安装。两者的区别如下:本地安装:package会被下载到当前所
在目录,也只能在当前目录下使用。全局安装:package会被下载到到特定的系统目录下,安装的package能够在所有目录下使用。N
PM介绍npm的本地安装:运行如下命令,就会在当前目录下安装grunt-cli(grunt命令行工具):npminstallg
runt-cli安装结束后,当前目录下回多出一个node_modules目录,grunt-cli就安装在里面。同时注意控制台输出的
信息:grunt-cli@0.1.9node_modules/grunt-cli├──resolve@0.3.1├──nop
t@1.0.10(abbrev@1.0.4)└──findup-sync@0.1.2(lodash@1.0.1,glob@
3.1.21)NPM介绍npm的本地全局安装:在本地安装的命令中加一个-g就实现了全局安装,如下:npminstall-g
grunt-cli安装结束后,在配置的全局路径下就会出现grunt-cli文件的包文件grunt-cli@0.1.9node_
modules/grunt-cli├──resolve@0.3.1├──nopt@1.0.10(abbrev@1.0.4)└
──findup-sync@0.1.2(lodash@1.0.1,glob@3.1.21)NPM介绍npm的包管理命令是使用
频率最高安装、卸载、更新、查看、搜索、发布等命令,如下所示:1.安装最新版本的grunt-clinpminstallgrunt
-cli2.安装0.1.9版本的grunt-clinpminstallgrunt-cli@"0.1.9"3.卸载grunt-c
linpmuninstallgrunt-cli4.卸载0.1.9版本的grunt-clinpmuninstallgrunt
-cli@"0.1.9"NPM介绍5.npmls:查看安装了哪些包npmls6.npmlspkg:查看特定package的
信息npmlsgrunt-cli输出的信息比较有限,只有安装目录、版本,如下:/private/tmp/npm└──grun
t-cli@0.1.9如果要查看更详细信息,可以通过npminfopkg,输出的信息非常详尽,包括作者、版本、依赖等。npm
infogrunt-cliNPM介绍7.npmupdatepkg:package更新npmupdategrunt-cl
i8.npmsearchpgk:搜索npmsearchgrunt-cli9.npmpulishpgk:发布模块npm
publishnpmpublishNPM介绍Node.js发布包的流程如下图所示:编写模块
初始化包描述文件npminit注册包仓库账号npmadduser上传包npmpublishnpminst
all安装包npmownerlsnpmowneraddr>npmownerrm管理包权限NPM配置npm的配置
工作主要是通过npmconfig命令,主要包含增、删、改、查几个步骤,下面就以最为常用的proxy配置为例:1.设置proxy内
网使用npm很头痛的一个问题就是代理,假设我们的代理是http://proxy.example.com:8080,那么命令如下:
npmconfigsetproxyhttp://proxy.example.com:8080由于npmconfigse
t命令比较常用,可以如下简写npmsetproxyhttp://proxy.example.com:8080NPM配置2.
查看proxy设置完,我们查看下当前代理设置npmconfiggetproxy输出如下:http://proxy.examp
le.com:8080/同样可如下简写:npmgetproxyNPM配置3.删除proxy代理不需要用到了那就删掉,命令如下
:npmdeleteproxy4.npmconfiglist:查看所有配置npmconfiglist5.直接修改配置文
件有时候觉得一条配置一条配置地修改有些麻烦,就直接进配置文件修改了npmconfigedit包模块require()出口模块
模块require()require()模块require()模块包组织模块示意图Node.js中包在Node.js语言中,包和模
块并没有本质的不同,包是在模块的基础上更深一步的抽象,包将某个独立的功能封装起来,用于发布、更新、依赖管理和进行版本控制。Comm
onJS的包规范定义比较简单,包由包结构和包描述文件两个部分组成,前者用于组织包中的各个文件,后者描述报的相关信息,以供外部读取分
析。Node.js包结构包实际上是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件,安装后解压还原为目录。完全
符合CommonJS规范的包目录应该包含如下文件:1)package.json:包描述文件;2)bin:用于存放可执行二进制文
件的目录;3)lib:用于存放JavaScript代码的目录;4)doc:用于存放文档的目录;5)test:用于存放单元测试
用例的目录。Node.js包假设当我们下载了node应用,这个node应用依赖于A、B、C三个包,如果没有package.jso
n,我们需要人肉安装这个三个包(如果对版本有特定要求就更悲剧了):npminstallAnpminstallBnpmin
stallC有了package.json,一行命令安装所有依赖。npminstallNode.js包描述文件package
.json文件是用来记录项目中所用到的依赖以及项目的配置信息(包名、版本信息、作者等等),一个完整的package.json文件包
含:1、name。包名,需要在NPM上是唯一的。不能带有空格。2、description。包简介。通常会显示在一些列表中。3、ve
rsion。版本号。一个语义化的版本号(http://semver.org/),通常为x.y.z。该版本号十分重要,常常用于一些
版本控制的场合。4、keywords。关键字数组。用于NPM中的分类搜索。5、maintainers。包维护者的数组。数组元素是一
个包含name、email、web三个属性的JSON对象。6、contributors。包贡献者的数组。第一个就是包的作者本人。在
开源社区,如果提交的patch被merge进master分支的话,就应当加上这个贡献patch的人。格式包含name和email。
如:"contributors":[{"name":"JacksonTian","email":"mail@gmai
l.com" },{"name":"fengmk2","email":"mail2@gmail.com"}],Node.
js包描述文件7、bugs。一个可以提交bug的URL地址。可以是邮件地址(mailto:mailxx@domain),也可以是
网页地址(http://url)。licenses。包所使用的许可证。例如:"licenses":[{"type":"GPL
v2","url":"http://www.example.com/licenses/gpl.html",}]8、reposi
tories。托管源代码的地址数组。9、dependencies。当前包需要的依赖。这个属性十分重要,NPM会通过这个属性,帮你自
动加载依赖的包。以下是Express框架的package.json文件,值得参考。{"name":"express","de
scription":"Sinatrainspiredwebdevelopmentframework","versio
n":"3.0.0alpha1-pre","author":"TJHolowaychuk}10、licenses:当前包
使用的许可证列表,它的格式如下:“licenses”:[{“type”:”GPLv2”,“url”:”http://www.exa
mple.com/licenses/gpl.html”}]Node.js包描述文件11.scripts:脚本说明对象。它主要被包
管理器用来安装、编译、测试和卸载包,示例如下:"scripts":{"install":"nodeinstall.js",
"test":"test.js"}12.main:指定加载的入口文件,如果没有node会检查目录下的index.js,inde
x.node,index.json作为默认入口。13.devDependencies:项目开发时所依赖的模块14、homepage
:当前包的网站地址15、os:操作系统支持列表,这些操作系统取值包括aix、freebsd、linux、macos、solaris
、vxworks、windows。如果设置为空,则不对操作系统做任何假设;16、cpu:cpu架构的支持列表,有效架构名称有arm
、mips、ppc、sparc、x86和x86_64。17、engine:支持的JavaScript引擎列表,有效的引擎包括ejs
、flusspferd、gpsee、jsc、spidermonkey、narwhal、node和V8Node.js包描述文件18
.builtin:标志当前包是否是内建在底层系统的标准组件19.directories:包目录说明20.implements:实现
规范的列表。标志当前包实现了CommonJS的哪些规范Node.js包描述文件package.json字段相当多,但最重要的的是
下面几个name:package的名字(由于他会成为url的一部分,所以non-url-safe的字母不会通过,也不允许出现
"."、"_"),最好先在http://registry.npmjs.org/上搜下你取的名字是否已经存在version:pac
kage的版本,当package发生变化时,version也应该跟着一起变化,同时,你声明的版本需要通过semver的校验(sem
ver可自行谷歌)dependencies:package的应用依赖模块,即别人要使用这个package,至少需要安装哪些东东。
应用依赖模块会安装到当前模块的node_modules目录下。devDependencies:package的开发依赖模块,即别人
要在这个package上进行开发Node.js包版本在package.json里,经常会在包名后看到类似"~0.1.0",这就是
包的版本啦。下面会列举最常见的版本声明形式,以及版本书写的要求:常见版本声明形式a、"~1.2.3"是什么意思,看下面领悟"~1
.2.3"=">=1.2.3<1.3.0""~1.2"=">=1.2.0<1.3.0""~1"=">=1.0.0
<1.1.0"b、"1.x.x"是什么意思呢,继续自行领悟"1.2.x"=">=1.2.0<1.3.0""1.x.x"=
">=1.0.0<2.0.0""1.2"="1.2.x""1.x"="1.x.x""1"="1.x.x"Node
.js包版本版本书写要求:1.版本可以v开头,比如v1.0.1(v只是可选)2.1.0.1-7,这里的7是所谓的“构建
版本号”,也就是版本大于1.0.13.1.0.1beta,或者1.0.1-beta,如果1.0.1后面不是“连字符加数字”这
种形式,那么它是prerelease版本,即版本小于1.0.14.根据b、c,有:0.1.2-7>0.1.2-7-b
eta>0.1.2-6>0.1.2>0.1.2betaNode.js小结1、NPM介绍2、NPM的常用命令3、pac
kage.json文件结构4、package.json文件字段描述Node.js本章作业1、安装express模块2、在自己的电
脑上针对常用命令进行一一操作3、预习下一个小结内容谢谢!npm为你和你的团队打开了连接整个JavaScript天才世界的一扇
大门。它是世界上最大的软件注册表,每星期大约有30亿次的下载量,包含超过600000个包(package)(即,代码模
块)。来自各大洲的开源软件开发者使用npm互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。npx是一种在npm中安装工具
,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx
的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个command找到了:就
用本地的版本没找到:直接下载最新版本,完成命令要求使用完之后不会在你的本机或者项目留下任何东西因此优势总结:不会污染本机永远使用
最新版本的dependencynpx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自
动安装了npx使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地(可以是项
目中的也可以是本机的)寻找这个command找到了:就用本地的版本没找到:直接下载最新版本,完成命令要求使用完之后不会在你
的本机或者项目留下任何东西因此优势总结:不会污染本机永远使用最新版本的dependencynpx是一种在npm中安装工具,也可以被
单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npxmand>的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个command找到了:就用本地的版
本没找到:直接下载最新版本,完成命令要求使用完之后不会在你的本机或者项目留下任何东西因此优势总结:不会污染本机永远使用最新版本的
dependencynpx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了n
px使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地(可以是项目中的也可
以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19n
ode_modules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resolve、nopt、findup-
sync,它们各自的版本、依赖在后面的括号里列出来npx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时
候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?
帮你在本地(可以是项目中的也可以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为gru
nt-cli,版本为0.19node_modules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resol
ve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来npx是一种在npm中安装工具,也可以被单独的下载
使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx
的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当
前安装的package为grunt-cli,版本为0.19node_modules/grunt-cli:安装目录resolve@0
.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来npx是一种在npm
中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在
执行npx的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个简单说明一下:gr
unt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19node_modules/grunt-cl
i:安装目录resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括
号里列出来npx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用n
px的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的
)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19node_m
odules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,
它们各自的版本、依赖在后面的括号里列出来npx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买
一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地
(可以是项目中的也可以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为grunt-cl
i,版本为0.19node_modules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resolve、no
pt、findup-sync,它们各自的版本、依赖在后面的括号里列出来npx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19node_modules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来npx是一种在npm中安装工具,也可以被单独的下载使用在npm5.2.0的时候发现会买一送一,自动安装了npx使用npx的优势也就凸显出来了:当在执行npx的时候,npx会做什么事情?帮你在本地(可以是项目中的也可以是本机的)寻找这个简单说明一下:grunt-cli@0.1.9:当前安装的package为grunt-cli,版本为0.19node_modules/grunt-cli:安装目录resolve@0.3.1:依赖的包有resolve、nopt、findup-sync,它们各自的版本、依赖在后面的括号里列出来
献花(0)
+1
(本文系中转站199首藏)