初步理解package.json文件

每个Vue项目的根目录下面,一般都会有一个package.json文件。它定义了这个项目所需要的各个模块,以及项目的配置信息(比如版本、名称、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

package.json文件可以自己创建,也可以使用npm init命令创建

npm安装package.json时:直接转到当前项目目录下用命令npm install 或npm install --save-dev安装即可,自动将package.json中的模块安装到node-modules文件夹下

注意:package.json 中添加中文注释会编译出错

什么是npm install

我们在使用npm install安装模块的时候,一般会使用下面几种方式:

npm install moduleName #安装模块到项目目录下

npm install -g moduleName #将模块安装到全局,具体安装到磁盘哪个位置,要看npm config prefix 的位置

npm install -save moduleName #将模块安装到项目目录下,并在package文件的dependencies节点写入依赖

npm install -save-dev moduleName #将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖

npm install moduleName 命令

1. 安装模块到项目node_modules目录下。
2. 不会将模块依赖写入devDependencies或dependencies 节点。
3. 运行 npm install 初始化项目时不会下载模块。

npm install -g moduleName 命令

1. 安装模块到全局,不会在项目node_modules目录中保存模块包。
2. 不会将模块依赖写入devDependencies或dependencies 节点。
3. 运行 npm install 初始化项目时不会下载模块。

npm install -save moduleName 命令

1. 安装模块到项目node_modules目录下。
2. 会将模块依赖写入dependencies 节点。
3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。
4. 运行npm install --production或者注明NODE_ENV变量值为production时,自动下载模块到node_modules目录中。

npm install -save-dev moduleName 命令

1. 安装模块到项目node_modules目录下。
2. 会将模块依赖写入devDependencies 节点。
3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。
4. 运行npm install --production或者注明NODE_ENV变量值为production时,不会自动下载模块到node_modules目录中。

总结

devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。

下面我们来看一下package.json文件的结构

"name": "",

"version": "1.0.0",

"description": "vue + element-ui 无限级菜单 权限管理 后台模板 ",

"author": "",

"private": true,

"scripts": {},

"dependencies": {},

"devDependencies": {},

"papak":{"node":'',"npm":''},

"browserslist":{}

其中name和version是两个必须的文件,没有他们就无法install

private:

如果你"private": true在package.json中设置,那么npm将拒绝发布它。

这是一种防止意外发布私有存储库的方法。如果您希望确保仅将某个包发布到特定注册表(例如,内部注册表),请使用publishConfig下面描述的 字典registry在发布时覆盖config参数。

scripts:

指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。

下面的设置指定了npm run dev、npm run bulid、npm run unit、npm run test、npm run lint时,所要执行的命令。

dependencies,devDependencies:

dependencies和devDependencies两项,分别指定了项目运行所依赖的模块、项目开发所需要的模块。它们都指向一个对象,该对象的各个成员,分别由模块名和对应的版本要去组成,表示依赖的模块及其版本范围

--save参数表示将该模块写入dependencies属性,
--save-dev表示将该模块写入devDependencies属性。

papak/engines:

指定项目所依赖运行环境的版本号

browerslist:

根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器,而不是一股脑的添加。避免不必要的兼容代码,以提高代码的编译质量。

>1%:全球超过1%人所使用的浏览器

>5% in US: 指定国家覆盖率

last 2 versions: 兼容浏览器最新版本到后两个版本

not ie <= 8: 方向排除部分版本


如果多一张船票,你愿不愿意跟我一起走?💗💗