Node.js(笔记08) - 包管理配置文件(package.json)
包管理配置文件
npm 规定,在项目根目录中,必须提供一个叫做 package.json 的包管理配置文件,用来记录与项目有关的一些配置信息。例如:
1)项目的名称、版本号、描述等;
2)项目中都用到了哪些包;
3)哪些包只在开发期间会用到;
4)哪些包在开发和部署时都需要用到;
多人协作的问题
整个项目的体积是:30MB,第三方包就占了:28MB,项目源代码体积:2MB;
遇到的问题:第三方包的体积过大,不方便团队成员共享项目源代码;
解决方案:共享时剔除 node_modules
如何记录项目中安装了哪些包
在项目根目录中,创建一个 package.json 的配置文件,即可用来记录项目中安装了哪些包,从而方便剔除 node_modules 目录之后,在团队成员之间共享项目源代码。
注意:开发中,要把 node_modules 文件夹添加到 .gitignore 忽略文件中,不要上传到 github 中。
快速创建 package.json
npm 包管理工具提供一个快捷命令: npm init -y
,可以在执行命令时所处的目录中,创建 package.json 这个包管理配置文件:
注意:
1)上述命令,只能在英文的目录下成功运行!所以,在项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
2)运行 npm install 命令安装包的时候,npm 包管理工具会自动把 包的名称和版本号,记录到 package.json 中。
执行完后:
dependencies 节点
package.json 文件中,有一个 dependencies 节点,专门用来记录使用 npm install 命令安装了哪些包。初始化的时候是没有这个节点的,当安装了包后,就有了;
比如:一次安装几个包;
一次安装了两个包,
提示添加了34 个包,因为还依赖了其他的包;
此时,再看下 package.json 文件
提示:dependencies 节点中多了 jquery 和 art-template 两条版本记录;
一次性安装所有包
当拿到一个剔除了 node_modules 的项目之后,需要先把所有的包下载到项目中,才能将项目运行起来,否则会报类似下面的错误:
比如:执行demo.js
当前 node_modules 中有 moment 这个包,所以执行很顺利,删除整个 node_modules 后再执行:
就报一堆错误:
node_modules 目录删除了,但 package.json 还在。只需要执行命令
就可以一次性安装所有的依赖包;
提示:执行 npm install 命令时,npm 包管理工具会先读取 package.json 中的 dependencies 节点,读取到记录的所有依赖包名称和版本号之后,npm 包管理工具会把这些包一次性下载到项目中。
再执行 node demo.js 文件:
结果就正常了。
卸载包
运行 npm unstall 命令,来卸载指定的包:
提示:安装包能简写成 npm install => npm i ,卸载包不能简写;
注意:npm uninstall 命令执行成功后,会把卸载的包从 package.json 的 dependencies 中移除。
dependencies 节点中也把 moment 的信息去掉了;
项目还要使用 moment ,再安装回来就行;
dependencies 节点中就又多了一个 moment ;
devDependencies 节点
如果某些包只在项目开发阶段会用到,在项目上线后用不到了,则建议把这些包记录到 devDependencies 节点中。与之对应的,某些包在开发和项目上线后都需要用到,则建议把这些包记录到 dependencies 节点中。这两个节点,也只有这一点的区别。
使用如下命令,将包记录到 devDependencies 节点中:
或简写:
提示:包名(moment)和参数(--save-dev) 的位置可以互换,语法比较随意;
示例:
同时,package.json 包中的 devDependencies 节点中就多了一项记录;
为什么下包速度慢
如果使用 npm 默认的包注册中心地址下载,就会比较慢。毕竟是在国外,经过海底光纤,不远万里...
国内淘宝 npm 镜像服务器也提供了完整同步的 npm 包,极大提高了下包速度。
镜像(Mirroring):是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本。
切换 npm 下包镜像源
查看当前下包镜像源:
返回: http://registry.npmmirror.com/ ,我这已经改成淘宝镜像了。
官方源地址: https://registry.npmjs.org/
设置新的镜像源:
或,加个"="也行。
nrm 切换镜像源工具
为了更方便切换下包的镜像源,我们可以安装 nrm 小工具,利用 nrm 提供的终端命令,可以快速查看和切换下包的镜像源;
安装:
全局安装参数: -g
查看当前所有可用的镜像源地址:
将下包的镜像源切换为 taobao 镜像:
来回切换下看看:
切换成 tencent 再切换回 taobao。
推荐阅读:
NPM 简介、安装、配置、常用方法