详解npm和package-lock.json

1. 什么是 NPM

NPM 的全称是 Node Package Manager,是 Node.js 官方提供的包管理工具,他已经成了 Node.js 包的标准发布平台,用于 Node.js 包的发布、传播、依赖控制。

2. 如何使用 NPM

npm 不需要单独安装。在安装 Node 的时候,会连带一起安装 npm 。但 Node 附带的 npm 可能不是最新版本,最后用下面的命令,更新到最新版本。

$ sudo npm install npm@latest -g    # Linux 命令
npm install npm -g                  # Window 系统使用这个命令
 
也就是使用 npm 安装自己。之所以可以这样,是因为 npm 本身与 Node 的其他模块没有区别。
 
$ npm help              # 查看 npm 命令列表
$ npm -l                # 查看各个命令的简单用法
$ npm -v                # 查看 npm 的版本
$ npm config list -l    # 查看 npm 的配置

​常用命令
npm version  查看 npm 和 node 的版本
npm list --depth=0 [-g]  查看[全局]安装的包
npm root [-g]  查看[全局的]包的安装路径

3. npm init 初始化 package.json 文件

npm init 用来初始化生成一个新的 package.json 文件,安装包的信息可保持到项目中,它会向用户提问一系列问题,以便后续的其它的项目开发或者他人合作使用。如果你觉得不用修改默认配置,一路回车就可以了。如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的 package.json 文件。

用法: npm init [-f|--force|-y|--yes]
$ npm init -y

4. package.json

package.json 是在运行 “ npm init ”时生成的,主要记录项目依赖,有以下结构

name:项目名,也就是在使用npm init 初始化时取的名字,但是如果使用的是npm init -y 快速初始化的话,那这里的名字就是默认存放这个文件的文件名;
version:版本号;
private:希不希望授权别人以任何形式使用私有包或未发布的;
scripts-serve:是vue的项目启动简写配置;
scripts-build:是vue的打包操作简写配置;
dependencies:指定了项目运行时所依赖的模块;
devDependencies:指定项目开发时所需要的模块,也就是在项目开发时才用得上,一旦项目打包上线了,就将移除这里的第三方模块;

5. package-lock.json

package-lock.json 是在运行 “npm install” 时生成的一个文件,只单纯记录本项目的依赖, 而没有记录下依赖的依赖, 并且依赖之间的版本号又没有明确固定, 导致无法保证依赖环境一致,进而导致项目出现bug。而package-lock.json就是用来lock住项目依赖的依赖以保证其他所有人人在使用 npm install 时下载的依赖包都是一致的。

6. package.json 和 package-lock.json总结

package.json用于告诉npm项目运行需要哪些包, 但包的最终安装的版本不能够只依靠这个文件进行识别, 还需以package-lock.json为准package.json中修改版本号会影响package-lock.json, 并且package.json比package.lock.json的优先级高, 如果package.json中less版本为^1.0.0 , package-lock.json中less版本为2.1.2, 则最终安装的less版本为1.7.5, package-lock.json中less即其依赖的包将被从2.1.2退回到1.7.5`的状态。为了保证该项目的环境依赖一致, 在项目移动时需要同时复制 package.json 和 package.lock.json 两个文件。不要轻易动package.json与package-lock.json。

你可能感兴趣的:(json,npm,webpack)