抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

本文介绍:

  1. nodejs环境的搭建。
  2. nvm工具管理nodejs版本的使用。
  3. npm包管理工具的使用以及命令。

nodejs

概念:

什么是nodejs?

脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色。而对于需要独立运行的JS,nodejs就是一个解析器。

每一种解析器都是一个运行环境,不但允许js定义各种数据结构,进行各种计算,还允许js使用允许环境提供的内置对象和方法做一些事情。如运行在浏览器中的js的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在nodejs中的js的用途是操作磁盘文件或搭建http服务器,nodejs就相应提供了fs,http等内置对象。

能做什么?

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

因此,对于前端而言,虽然不是人人都要拿NodeJS写一个服务器程序,但简单可至使用命令交互模式调试JS代码片段,复杂可至编写工具提升工作效率。

安装:

此处不介绍安装,nodejs版本安装可由nvm工具管理。

nvm

nvm就是nodejs version manage 叫做nodejs 版本管理,而nodejs有很多版本,场景如下:

1、而你手上开发的有多个项目又分别是不同的nodejs版本,咱们就可以用nvm轻松切换!

2、假设你正在开发的项目开始使用的nodejs版本是8.0,而现在因为某些原因,你需要升级 或者 降级 nodejs 版本,也可以使用 nvm 轻松切换

nvm下载、安装、设置

下载

nvm的GitHub下载地址

  • nvm-noinstall.zip:绿色免安装版,但使用时需进行配置。
  • nvm-setup.zip:安装版,推荐使用

安装

注:安装路径不要出现中文和空格。

  1. 双击安装文件 nvm-setup.exe

    img

  2. 选择nvm安装路径

    img

  3. 选择nodejs路径。

    img

这个是一个映射文件的路径,相当于快捷方式。实际安装位置默认在nvm根目录。
image-20201223080902706

  1. 确认安装即可

    img

  2. 输入 nvm v,弹出版本号,表示安装成功。

设置 node 和 npm 镜像地址

在nvm安装目录,找到 setting.txt加上如下两行:

1
2
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/

nvm操作nodejs(快速上手)

安装

安装你要的nodejs版本,必须是npm和nodejs都成功,因为有时候会npm或者nodejs不会下载成功,不成功的原因很多,前提必须按我的这个步骤,并且是之前没有装nodejs,或者是卸载干净了nodejs。

命令:nvm install 版本号

img

如上表示成功了,继续检验是否真的成功,进入nvm目录查看:

img

下图是ok的

img

下图是不行的

img

你可以自己去下载一个nodejs版本,但后解压后放复制到nvm目录,注意命名,如:v11.11.0,这样就不需要使用 nvm install 命令。nodejs官方单独下载地址 镜像地址也可以下载更快

系统原因可能nodejs过高版本不支持低版本的操作系统,根据操作系统下载版本。个人测试win7不支持v14,可以支持v13版本。

nvm切换版本

1
2
nvm use 版本号
这样就好了,node和 npm都好了

个人理解:nvm use实际做的就是更换映射的nodejs安装位置的。

nvm命令整理:

注:命令中的[xxx]将字符串括起来写更加规范。也可以直接写xxx。

命令说明
nvm list installed
nvm list
♣nvm ls
查看已经安装的版本
nvm list available查看网络可以安装的版本
nvm install [version]安装最新版本nvm
nvm use [version]切换使用指定的版本node
nvm uninstall [version]卸载指定版本的nodejs。
一般卸载不干净,直接找安装目录删除即可。
nvm alias [name] [version]给不同的版本号添加别名
nvm unalias [name]删除已定义的别名
nvm reinstall-packages [version]在当前版本node环境下,
重新全局安装指定版本号的npm包。
nvm on打开nodejs控制。
nvm off关闭nodejs控制,实际将nodejs映射路径文件夹删除。
nvm arch显示node是运行在32位还是64位。
nvm proxy [url]设置下载代理。不加可选参数url,显示当前代理。
将url设置为none则移除代理。
nvm node_mirror [url]设置或者查看setting.txt中的node_mirror,
不设置默认: https://nodejs.org/dist/
nvm npm_mirror [url]设置或者查看setting.txt中的npm_mirror,
不设置默认: https://github.com/npm/npm/archive/.
nvm root [path]设置和查看root路径,(存储node的目录),
如果未设置,默认使用当前目录。
nvm version
♣nvm v
查看当前的版本

npm

Npm(Node Package Manager) 是node的包管理工具,是用JavaScript写出来的工具 ,被内置进了node中,新版的nodejs已经集成了npm,所以之前npm也一并安装好了。

命令:

检测是否成功安装npm

1
2
npm -v		
6.4.1 //安装成功会返回这个版本号

使用 npm 命令安装模块

1
npm install <Module Name>		//<Module Name>指的是模块名

安装多个模块

1
npm install <Module Name>  <Module Name>

检测安装

1
npm i <Module Name>

npm i 和 npm install 的区别,实际使用的区别点主要如下(windows下):

  1. 用npm i安装的模块无法用npm uninstall删除,用npm i才卸载掉 。
  2. npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号 。
  3. 部分npm包在当前node版本下无法使用,必须使用建议版本。
  4. 安装报错时intall肯定会出现npm-debug.log 文件,npm i不一定。

全局安装与本地安装

npm 的包安装分为本地安装(local),全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如

1
2
3
npm install <Module Name>         # 本地安装
npm install <Module Name> -g # 全局安装
// install可以缩写为i

如果出现以下错误:

1
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087

解决办法为:

1
npm config set proxy null
本地安装
  • 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录)如果没有 node_modules 目录,会在当前执行npm 命令的目录下生成node_modules 目录
  • 可以通过 require() 来引入本地安装的包
全局安装
  • 将安装包放在 /usr/local 下或者你 node 的安装目录
    如果是nvm安装的node,安装在nvm根目录下的对应node目录中。
    image-20201223074648728
    image-20201223074725058
  • 可以直接在命令行里使用

–save本地安装保存和根据配置复原依赖安装。

相同点

三者都会本地安装包到项目的node_modules目录中

区别

区别在于对项目package.json的修改,npm install不会修改package.json,而后两者会将依赖添加进package.json,后两者的区别请看下文循序渐进。

指定依赖包

指定包取决于你的项目,你需要在package.json 文件中列出你需要使用的包,有两种包可以选择:

  • “dependencies”: 这些包都是你的应用程序在生产环境中所需要的。
  • “devDepedencies”:这些包只是在开发和测试中需要的。
手动编辑package.json文件

你可以手动编辑你的package.json。你需要在包的dependencies 对象中创建一个属性用来指出你需要添加的依赖。
例如下面的项目中,在主要生产环境中使用包my_dep的版本1.0.0,而在在开发环境中使用包 my_test_framework 的3.1.0版本。

1
2
3
4
5
6
7
8
9
10
{
"name": "my_package",
"version": "1.0.0",
"dependencies": {
"my_dep": "^1.0.0"
},
"devDependencies" : {
"my_test_framework": "^3.1.0"
}
}

--save--save-dev下载标签

  • 他们表面上的区别是–save 会把依赖包名称添加到 package.json 文件 dependencies 键下,–save-dev 则添加到 package.json 文件 devDependencies 键下.
  • dependencies是运行时依赖,devDependencies是开发时的依赖。即devDependencies 下列出的模块,是我们开发时用的

比如 我们安装 js的压缩包gulp-uglify 时,我们采用的是 “npm install gulp-uglify --save-dev”命令安装,因为我们在发布后用不到它,而只是在我们开发才用到它。dependencies 下的模块,则是我们发布后还需要依赖的模块,譬如像jQuery库或者Angular框架类似的,我们在开发完后后肯定还要依赖它们,否则就运行不了。

补充:正常使用npm install时,会下载dependencies和devDependencies中的模块,当使用npm install --production或者注明NODE_ENV变量值为production时,只会下载dependencies中的模块。个人理解:这个功能类似于Ruby的bundle管理依赖包,bundle install 非常好用。

npm install --force 会强制重新安装所有,一般卸载出问题后,就执行此命令。

安装package.json
1
2
npm install				#安装dependencies和devDependencies。
npm install --production #只安装dependencies而不安装devDependencies。

❤️❤️❤️❤️❤️注意:

刚下载下来的nodejs项目 package-lock.json 会阻碍一些报的安装,需要删除。

覆盖安装

经过测试,多次install一个包,会覆盖原来的包。

查看模块的版本号

1
npm <Module Name> grunt

安装指定版本

npm install 默认安装最新版本,如果想要安装指定版本,可以在库名称后加 @版本号

1
2
3
npm install <Module Name>@latest
npm install <Module Name>@0.1.1
npm install <Module Name>@">=0.1.0 <0.2.0"

更新模块

1
npm update <Module Name>

更新升级时应该把原本的node-modules文件夹删除,不然的话可能会报错

更新并将版本保存至本地。

1
npm install hexo-butterfly-douban --update --save

卸载模块

1
npm uninstall <Module Name>

参数:

​ --save 将package.json的版本也删除

简写:

1
npm un <Module Name>

注意:

​ 如果用cnpm安装,同时也用cnpm卸载。

查看模块信息

1
npm  list  <Module Name>

查看模块地址

1
npm view <Module Name> repository.url

很多包的地址都是托管在github上

查看帮助信息

1
npm help

搜索模块,验证某个模块是否存在

发布一个npm包的时候,需要检验某个模块是否已存在

1
npm search  <Module Name>

如果存在就会显示其完整信息

npm获取全局安装的默认目录

1
npm config get prefix

npm设置全局安装的默认目录

1
npm config set prefix “directory”

使用淘宝 NPM 镜像

大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像
你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步
你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:

1
cnpm install [name]

cnpm卸载与安装步骤

1.卸载原有旧的版本:

1
npm uninstall -g cnpm --registry=https://registry.npm.taobao.org

2.注册模块镜像:

1
npm set registry https://registry.npm.taobao.org

3.node-gyp 编译依赖的 node 源码镜像

1
npm set disturl https://npm.taobao.org/dist

4.清空缓存

1
npm cache clean --force

5.重新安装cnpm

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

重新安装所有依赖

1
2
3
4
rm node_modules/rm -rf node_modules
rm package-lock.json
npm cache clear --force
npm install

❤️npm使用心得和注意事项

  1. 刚下载下来的nodejs项目 package-lock.json 会阻碍一些报的安装,个人觉得没什么用,而且也会影响自动化部署删除,包的删除和更新,所以如果项目中携带了这个文件,建议直接删除,再进行npm的系列操作。

评论