生成方法
一般在程序根目录,使用 npm init自动生成,然后进行配置
字段简介
- name:项目的名字,不要把node或者js放在名字中;
- version:项目版本号,改变包的同时应该也改变版本号;
- description :描述包作用;
- dependencies:指定项目运行时依赖的包名和版本号(或者版本号范围),可以用 file 配置本地依赖(在把包发不到公共registry时不要如此设置);如
-
{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
- devDependencies:如果有人计划在他们的项目中下载和使用你的模块,但他们可能并不想或并不需要你开发所使用的外部测试和文档框架,这些项将会在根目录下执行npm link或npm install时被安装;
- engines:指定 node 或/和 npm 的工作版本,;
- private: 可防止私包发布,设置true 时,npm会拒绝发布它;
- repository :指定代码存放位置,设置好后,项目推送到远程地址时可以只是用 npm publish;
"repository" :
{
"type" : "git",
"url" : "http://github.com/isaacs/npm.git"
}
"repository" :
{
"type" : "svn",
"url" : "http://v8.googlecode.com/svn/trunk/"
}
- scripts:由脚本命令组成的hash对象;
- config:配置用于包脚本中的跨版本参数;
- keywords:项目简介,方便npm search查询;
- homepage:项目官网url,这和“url”不一样。如果你放一个“url”字段,registry会以为是一个跳转到你发布在其他地方的地址;
- bugs:方便用户提交项目问题的url 或邮件地址; license:许可证;
- files:包含项目中文件的数组;
- main:配置一个文件名指向模块的入口文件,这应该是一个相对于根目录的文件路径;
- bin:配置一个或多个可执行的文件;
- man:指定一个单一的文件或者一个文件数组供man程序使用;
还有一些非官方字段
注意事项
- package.json可以手工编写,也可以使用 npm init 命令自动生成;
- package.json中添加中文注释会编译出错;
- package.json中最重要的字段是 name 和 version。他们都是必须的,如果没有就无法install。name和version一起组成的标识在假设中是唯一的。改变包应该同时改变version。
- 每个项目根目录下一般都有package.json文件,来定义项目需要的各种模块,以及项目配置信息;
- package.json必须是真正的json,不能是js对象。
package.json和package-lock.json
package.json:
主要用来定义项目中需要依赖的包
package-lock.json:
在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。
'^' :
放在版本号之前,表示向后兼容依赖,说白了就是在大版本号不变的情况下,下载最新版的包
项目中引入的包版本号之前经常会加^号,每次在执行npm install之后,下载的包都会发生变化,为了系统的稳定性考虑,每次执行完npm install之后会对应生成package-lock文件,该文件记录了上一次安装的具体的版本号,相当于是提供了一个参考,在出现版本兼容性问题的时候,就可以参考这个文件来修改版本号即可。
参考: