package.json

本文详细解析了package.json文件的生成方式及各字段含义,包括name、version、dependencies等关键信息,阐述了其在项目配置中的核心作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成方法

一般在程序根目录,使用 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程序使用;

还有一些非官方字段

注意事项

  1. package.json可以手工编写,也可以使用 npm init 命令自动生成;
  2. package.json中添加中文注释会编译出错;
  3. package.json中最重要的字段是 name 和 version。他们都是必须的,如果没有就无法install。name和version一起组成的标识在假设中是唯一的。改变包应该同时改变version。
  4. 每个项目根目录下一般都有package.json文件,来定义项目需要的各种模块,以及项目配置信息;
  5. package.json必须是真正的json,不能是js对象。

package.json和package-lock.json

package.json:

主要用来定义项目中需要依赖的包

package-lock.json:

在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。

'^' :

放在版本号之前,表示向后兼容依赖,说白了就是在大版本号不变的情况下,下载最新版的包

 

项目中引入的包版本号之前经常会加^号,每次在执行npm install之后,下载的包都会发生变化,为了系统的稳定性考虑,每次执行完npm install之后会对应生成package-lock文件,该文件记录了上一次安装的具体的版本号,相当于是提供了一个参考,在出现版本兼容性问题的时候,就可以参考这个文件来修改版本号即可。

 

参考:

json详解

非官方字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值