1、什么是Packgage.json?
package.json 文件是用来管理本地安装 npm 包的唯一文件。它描述了当前项目依赖的包的列表,包含项目依赖包的版本,便于项目管理和移植,格式是严格的JSON格式。
2、依赖包
在 package.json 文件中指定项目依赖的包,这样复制项目时,可以使用 npm install 下载
2.1、依赖方式:
dependencies:在生产环境中需要用到的依赖
devDependencies:在开发、测试环境中用到的依赖,在上线打包后的代码是不存在的
2.2、版本选择:
会匹配最近的小版本依赖包,比如1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
会匹配最新的大版本依赖包,比如1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
*会匹配最新版本的依赖包,但会产生兼容问题,一般不推荐
2.3、版本号规范
项目的版本号都是从 1.0.0 版本开始。以后要升级版本应该遵循以下标准:
补丁版本:解决了 Bug 或者一些较小的更改,增加最后一位数字,比如 1.0.1
小版本:增加了新特性,同时不会影响之前的版本,增加中间一位数字,比如 1.1.0
大版本:大改版,无法兼容之前的,增加第一位数字,比如 2.0.0
3、安装参数 --save 和 --save -dev
添加依赖时我们可以手动修改 package.json 文件,添加或者修改 dependencies devDependencies 中的内容即可。
另一种方式是用命令行,在使用 npm install 时增加 --save 或者 --save -dev 后缀:
npm install <package_name> --save 表示将这个包名及对应的版本添加到 package.json的 dependencies
npm install <package_name> --save-dev 表示将这个包名及对应的版本添加到 package.json的 devDependencies
补充:
package.json中最重要的属性是name和version两个属性,这两个属性是必须要有的,否则模块就无法被安装,这两个属性一起形成了一个npm模块的唯一标识符。模块中内容变更的同时,模块版本也应该一起变化。
name属性就是你的模块名称,下面是一些命名规则:
- name必须小于等于214个字节,包括前缀名称在内(如 xxx/xxxmodule)。
- name不能以"_“或”."开头 不能含有大写字母
- name会成为url的一部分,不能含有url非法字符 下面是官网文档的一些建议: 不要使用和node核心模块一样的名称 name中不要含有"js"和"node"。 It’s assumed that it’s js, since you’re writing a package.json file, and you can specify the engine using the “engines” field. (See below.)
- name属性会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在name中都不能使用,也不能以"_“或”."开头
- name属性也许会被写在require()的参数中,所以最好取个简短而语义化的值。
- 创建一个模块前可以先到后边的网址查查name是否已经被占用. https://www.npmjs.com/ name属性可以有一些前缀如 e.g. @myorg/mypackage.在npm-scope(7)的文档中可以看到详细说明