NPM 的简介
npm(Node Package Manager)是 node 的包管理器,随同 NodeJS 一起安装的包管理和分发工具,它很方便让 JavaScript 开发者下载、安装、上传以及管理已经安装的包,无论是前端还是后端开发都会使用到 npm 包管理器。(前端框架开发 react、Vue…,后台 node 开发)。历史原由:做一个网站依赖的代码越来越多,需要去很多网站下载相关分享代码,每次都要手工下载是不现实的,而且如果有个网站关闭了怎么办?于是出现了一个解决方案:用一个工具集中及管理这些代码(资源镜像站),这就是npm
之 node 包管理器。
npm 的实现思路可以这么理解:
1、买个服务器做仓库(资源镜像);
2、让 jQuery、Bootstrap、Underscore…等将代码提交到服务器上;
3、如果有人想用这些库,只需运行命令(如:npm install jQuery
)下载到本地,库的代码就会被下载到当前 ./node_modules 目录中。
Ubuntu 平台
1、npm 的安装
● npm 的 linux 版本无需要安装,直接下载解压就可以使用,进入【下载页面】选择 Linux Binaries (x64) 版本下载。更多下载网址:
全部版本下载页面
英文最新下载页面
中文最新下载页面
网文:Linux 系统下 Nodejs 安装与卸载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
####安装方法####
wget https://nodejs.org/dist/latest-v10.x/node-v10.24.1-linux-x64.tar.xz #在命令窗口直接下载
tar -xf node-v10.24.1-linux-x64.tar.xz #解压到当前目录
sudo mv node-v10.24.1-linux-x64 /usr/local/node #移动文件夹并重命名为[node](如果要安装多个版本,文件夹名称改为另一个名,例如:[node-v17.9.0-linux-x64])
# sudo gedit /etc/profile #(因在系统目录下创建了软链接,此步可不用设置)编辑系统环境变量,在文件最后加入两行内容:export PATH=$PATH:/usr/local/node/bin
# source /etc/profile #(因在系统目录下创建了软链接,此步可不用设置)使能系统环境变量。 export PATH=$PATH:/usr/local/node/lib/node_modules/npm/bin
cd /usr/bin #切换到软链接目录下
sudo ln -s /usr/local/node/bin/node node #添加执行软链接(如果要安装多个版本,则要改名,例如:sudo ln -s /usr/local/node-v17.9.0-linux-x64/bin/node node-17.9.0)
sudo ln -s /usr/local/node/bin/npm npm #添加执行软链接(如果要安装多个版本,则要改名,例如:sudo ln -s /usr/local/node-v17.9.0-linux-x64/bin/npm npm-17.9.0)
node -v #查看版本,验证安装是否成功(v10.24.1)
npm -v #查看版本,验证安装是否成功(6.14.12)
####卸载方法####
sudo rm -rf /usr/local/node #直接删除整个目录即可(注意小心操作)
|
● 由于不同的软件需要使用不同的 npm 版本,过新或过旧都有可能不支持(例如:使用gitbook
制作电子书就是因为不支持新版本,运行命令时提示各种错误),所以建议根据实际安装多个版本的 node(npm)来解决!多个版本共存的处理方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
####安装方法####
#(1) #安装另一版本同上面介绍一样,只是[node]和[npm]名称不一样,
#例如:1)文件夹名称为[node-v17.9.0-linux-x64],2)软链接名称为[node-17.9.0]和[npm-17.9.0]【具体请看(2)】
#(2) #需要修改前面安装的[node-v10.24.1-linux-x64] 软链接名称:
cd /usr/bin #切换软链接目录下
sudo ln -s /usr/local/node/bin/node node-10.24.1 #添加执行软链接(★因默认快捷方式改了名,必须按下面的【共存处理】进行操作)
sudo ln -s /usr/local/node/bin/npm npm-10.24.1 #添加执行软链接(★因默认快捷方式改了名,必须按下面的【共存处理】进行操作)
####共存处理###
sudo update-alternatives --install /usr/bin/node node /usr/bin/node-17.9.0 1709 --slave /usr/bin/npm npm /usr/bin/npm-17.9.0
sudo update-alternatives --install /usr/bin/node node /usr/bin/node-10.24.1 1024 --slave /usr/bin/npm npm /usr/bin/npm-10.24.1
#备注:上面的 --slave 的 npm 表示的默认版本由 node 配置决定。
#移除:从优先级列表中移除例子
#sudo update-alternatives --remove node /usr/bin/node-17.9.0
####选择版本###
sudo update-alternatives --config node #配置默认版本,根据界面提示输入对应数字+回车选择
|
2、npm 的命令
我们常用的npm
命令主要是做四种操作:初始化、安装、删除、配置。
网文:npm 常用命令汇总
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
npm -v #查看npm的版本
npm init #初始化一个NPM项目,生成package.json文件,里面有各种依赖包的信息
npm install #一键安装:安装package.json里的所有依赖文件到当前./node_modules/ 目录下
npm install XXXX #本地安装:安装包到当前./node_modules/ 目录下,需要通过require()调用(注:XXXX为具体包名)
npm install XXXX -g #全局安装:安装包到系统 /usr/local/ 目录下(或npm默认安装目录)可以通过命令行在任何地方调用它
npm install XXXX@3.9.1 #安装指定版本的包
npm install XXXX@latest #安装最新版本的包
npm uninstall XXXX #卸载安装的包(或 npm remove)
npm info XXXX #查看包的详细信息
npm search XXXX #查找npm仓库
npm config get registry #查看下载仓库镜像网址
npm list #查看当前项目安装的所有模块
npm list -g #查看全局的所有模块
#####[命令/选项]简写#####
# install -> i
# -global -> -g
# -save -> -S(大写)
# -save-dev -> -D(大写)
|
几个选项补充说明 |
npm install XXXX 命令 |
1. 安装模块到项目 node_modules 目录下。 2. 不会将模块依赖写入 devDependencies 或 dependencies 节点。 3. 运行 npm install 初始化项目时不会下载模块。 |
npm install -g XXXX 命令 |
1. 安装模块到全局,不会在项目 node_modules 目录中保存模块包。 2. 不会将模块依赖写入 devDependencies 或 dependencies 节点。 3. 运行 npm install 初始化项目时不会下载模块。 |
npm install -save XXXX 命令 |
1. 安装模块到项目 node_modules 目录下。 2. 会将模块依赖写入 dependencies 节点。 3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。 4. 运行 npm install –production 或者注明 NODE_ENV 变量值为 production 时,【会】自动下载模块到 node_modules 目录中。 5. 主要用于生产环境下,因为生产环境无须安装一些调试或工具模块。 |
npm install -save-dev XXXX 命令 |
1. 安装模块到项目 node_modules 目录下。 2. 会将模块依赖写入devDependencies 节点。 3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。 4. 运行 npm install –production 或者注明 NODE_ENV 变量值为 production 时,【不会】自动下载模块到 node_modules 目录中。 5. 主要用于开发环境下,因为开发环境往往安装一些调试或工具模块。 |
3、cnpm 之替代
因为 npm 安装插件是从国外服务器下载,受网络影响大,可能出现异常,所以我们乐于分享的淘宝团队做了一个完整 npmjs.org 镜像(中国 NPM 镜像),你可以用它来代替官方版本(只读),其同步频率目前为每 10 分钟一次以保证尽量与官方服务同步。cnpm
跟npm
用法是一致,只是在执行命令时将npm
改为cnpm
即可,但必须要清楚一点:cnpm
与npm
命令执行有差异。例如:先执行了cnpm install lodash
,然后再执行npm uninstall lodash
,此时会报错。补充说明:尽管使用 npm 改成淘宝仓库,但当模块比较多的时候,发现安装速度还是远远比 cnpm 慢。个人建议:从通用角度来看,还是建议使用 npm,并把下载仓库路径改为淘宝镜像以提高下载速度。
网文:npm更换成淘宝镜像源以及cnpm
1
2
3
4
5
6
7
8
9
10
11
12
13
|
###特别说明#### ##原淘宝【npm】域名即将于【2022.06.30】停止解析,请切换至新域名
# https://npm.taobao.org --切换为--> https://npmmirror.com
# https://registry.npm.taobao.org --切换为--> https://registry.npmmirror.com
###cnpm替代####
# npm config get registry #查看下载仓库镜像网址
# npm config set registry https://registry.npmmirror.com #修改下载仓库为淘宝镜像(注意:淘宝镜像只读不能写!)
# npm config set registry https://registry.npmjs.org #修改下载仓库为官方镜像(当要发布自己的镜像时需要修改回来)
npm install -g cnpm --registry=https://registry.npmmirror.com #安装cnpm(注释:--registry=表示临时使用另一个网站资源镜像)
sudo gedit /etc/profile #编辑系统环境变量,在文件最后加入内容:export PATH=$PATH:/usr/local/node/lib/node_modules/cnpm/bin
source /etc/profile #使能系统环境变量。
cnpm -v #查看版本。(注意:安装完后最好先使用命令`cnpm -v`查看其版本号或关闭并
# 重新打开命令窗口,否则安装完直接使用有可能会出现错误)
|