《Node.js简记》包管理器npm的安装、加速和常用指令
来源:互联网 发布:淘宝店多少单一颗心 编辑:程序博客网 时间:2024/06/05 18:35
前言:
上篇 《Node.js简记》 安装Node.js并实现Helloworld 我们已经完成了node开发环境的安装配置,接下来我们先来了解一下node的一个重要的工具——包管理器npm
。
npm安装和常用指令:
1.npm简介:
npm
是node的包管理工具,常用于一下场景:
- 用户可从npm服务器获取别人编写的
第三方包
或命令程序
到本地使用; - 用户可上传自己编写的包或者命令程序到npm服务器给别人下载使用。
2.npm安装:
新版本的node安装的时候自动安装了npm,所以无需单独下载安装,检查是否安装成功可以通过如下指令:
$ npm -v3.10.10
3.npm常用指令:
<name>
是指定的node的依赖包或者模块名称,例如express
等。
安装指令:
npm install <name>
全局安装:
npm install -g <name>
这里比上条多了
-g
参数,是global的意思,指一次安装全局可用,但是只能在命令行中全局使用,不能用通过require
的方式来调用全局包。例如:npm install -g hexohexo -v
同步到Package.json的安装:
npm install -s <name>
假设项目路径下有
Package.json
这个文件,使用此指令安装包的时候,所安装包的信息会被同步写到Package.json
中。反向的,假如项目中有Package.json
文件,我们可以把当前项目使用到的依赖包信息都填写到其dependencies
字段中,这样在项目目录中运行npm install
就能把dependencies
字段所有的依赖包都安装到本地,如此在提交代码到github上的时候,也不必将node_modules
文件夹上传。初始化包管理:
npm init
执行这个指令会在项目目录下生成一个
Package.json
文件,这是包管理的配置文件,包含应用名称
、版本号
、依赖包
等信息。移除指定已安装的包:
npm remove <name>
更新指定已安装的包:
npm update <name>
列出已安装的包:
npm ls
查询安装包的路径:
npm root
查询全局安装包的路径:
npm root -g
查询帮助项:
npm help
也可以专门查询指定指令的帮助信息:
npm help install
4.npm加速:
由于npm默认的获取资源地址是国外的服务器,常常会出现速度慢而导致超时安装失败的错误,一般我们还是使用淘宝提供的cpm
npm install -g cnpmcnpm install express
查询是否安装成功:
linsh@ubuntu:/application/node/express_demo$ cnpm -vcnpm@4.5.0 (/home/linsh/git/nvm/versions/node/v6.10.3/lib/node_modules/cnpm/parse_argv.js)npm@3.10.10 (/home/linsh/git/nvm/versions/node/v6.10.3/lib/node_modules/cnpm/node_modules/npm/lib/npm.js)node@6.10.3 (/home/linsh/git/nvm/versions/node/v6.10.3/bin/node)npminstall@2.30.0 (/home/linsh/git/nvm/versions/node/v6.10.3/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)prefix=/home/linsh/git/nvm/versions/node/v6.10.3 linux x64 4.2.0-27-generic registry=https://registry.npm.taobao.org
加载模块(包):
我们都知道node模块化的特性非常突出,而且各种第三方的功能模块都能通过node的包管理器npm
来获取,那么获取之后要如何引入到项目中呢?
1.required指令:
这就需要一个关键的指令require
,这里我们以简单的以node内带的 http
模块为例:
var http = require("http");
加载的包可以分为内部包
和外部包
,引入接口是一样的,加载顺序是:先从系统核心的模块中查找,再到当前项目的 node_modules
目录下查找。
2.node内置模块:
除了能够在服务端运行JavaScript之外,node本身也提供了诸如上述http
之类的一系列功能模块,用于与操作系统的交互,主要有:
- path:文件路径处理
- fs:操作文件系统
- child_process:新建子进程
- util:其他实用的小工具
- http:提供短连接Http服务器功能
- url:用于解析URL
- querystring:解析URL中的查询字符串
- crypto:提供加密和解密功能
- 其他
点击上述的模块名称可以查看对应的官方API
3.外部包的使用:
处理node核心自带的模块之外,其实在社区诞生了很多第三方的模块,这些模块通常都通过npm
进行管理,假如要使用它们,步骤如下:
下载包:
首先,我们要先通过npm
来获取外部包,在当前项目的目录下运行指令:npm install express
假如之前并未安装过外部包,在项目目录下会多出一个
node_modules
的文件夹,用于存放外部的包。加载包:
然后加载下载的外部包,加载包的方式其实与加载内部模块是一样的:var express = require("express");
通过
npm install -g <modulename>
全局安装的模块没办法通过此方式加载。
4.上传自己制作的包:
通过npm
我们不止可以获取别人编写的模块,还能上传我们自己编写的模块,当然需要符合npm
的规格,步骤如下:
创建包管理文件
package.json
:
在命令行中定位到当前创建的包目录,输入npm init
来生成包管理文件:E:\Node\projects\HappyWriter>npm initThis 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 fieldsand exactly what they do.Use `npm install <pkg> --save` afterwards to install a package andsave it as a dependency in the package.json file.Press ^C at any time to quit.name: (HappyWriter) happywriter # 模块名version: (1.0.0)description: writer editor # 模块描述entry point: (index.js)test command: testgit repository: # Github 地址keywords: linshuheauthor: linshuhelicense: (ISC)About to write to E:\Node\projects\HappyWriter\package.json: # 生成地址{ "name": "happywriter", "version": "1.0.0", "description": "writer editor", "main": "index.js", "scripts": { "test": "test" }, "keywords": [ "linshuhe" ], "author": "linshuhe", "license": "ISC"}Is this ok? (yes) yes
输入
yes
->回车,此时在当前项目目录下会生成一个package.json
文件,内容为:{ "name": "happywriter", "version": "1.0.0", "description": "writer editor", "main": "index.js", "scripts": { "test": "test" }, "keywords": [ "linshuhe" ], "author": "linshuhe", "license": "ISC"}
Package.json 属性说明
- name - 包名
- version - 包的版本号
- description - 包的描述
- homepage - 包的官网 url
- author - 包的作者姓名
- contributors - 包的其他贡献者姓名
- dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上
- main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require(“express”)
- keywords - 关键字
在npm资源库注册用户:
使用邮箱来注册用户$ npm adduserUsername: linshuhePassword:Email: (this IS public) linshuhe1@gmail.com
发布和撤回模块:
模块发布:npm publish
撤回指定版本的模块:
npm unpublish <package>@<version>
- 版号控制:
上述中在创建包管理文件的时候里面的字段version
用来进行包的版号控制,包含三位整数:X.Y.Z
,分别代表:主版本号、次版本号和补丁版本号,一下是更新版本号的原则:- 如果只是修复bug,需要更新Z位;
- 如果是新增了功能,但是向下兼容,需要更新Y位;
- 如果有大变动,向下不兼容,需要更新X位。
参考资料:
- Node基础篇(模块和NPM)
- npm常用命令
- NPM 使用介绍
- 《Node.js简记》包管理器npm的安装、加速和常用指令
- Node.js NPM包管理器
- Node.js NPM 包管理器
- npm --- Node.js包管理器
- node.js node包管理器--npm
- node.js npm包安装
- node npm包管理器
- node的包管理器----npm的使用
- node.js&npm的安装和配置
- 详解Node.js包的工程目录与NPM包管理器的使用_node.js
- 安装Node.js和npm
- 安装Node.js和npm
- node.js的npm安装的根目录已经下载的包的根目录查找和设置
- node.js、npm的安装
- Node.js包管理器Yarn的入门介绍与安装
- Node.js的包管理工具npm学习
- node和npm的安装
- node.js 和npm的安装及关系
- 虚拟化相关概念与技术整理(2)——硬件辅助虚拟化简介
- Android Studio查看函数(方法)的形参列表,返回值,以及提示信息
- 数据库 ——(1)
- PHP--内存泄漏
- mybatis知识汇总(一)
- 《Node.js简记》包管理器npm的安装、加速和常用指令
- HBuilder真机调试检测不了魅族手机
- CentOS 7安装broadcom无线网卡驱动
- Machine Learning With Spark Note 2:构建简单的推荐系统
- 父类引用指向子类对象
- 02_
- 表单引入 JSR303 后台验证
- 树剖
- 常用关键字整理