npm package.json文件解读
每个Nodejs项目的根目录下面,一般都会有一个package.json文件。该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。
package.json文件内部就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。
基本字段
- name - 项目名称(npm包名)。必需字段 
- version - 项目版本。必需字段。 
 版本号的格式为"1.0.0",分别代表“主版本号.次版本号.修订号”。它的递增规则如下:- 主版本号:当你做了不兼容的API 修改;
- 次版本号:当你做了向下兼容的功能性新增;
- 修订号:当你做了向下兼容的问题修正。
 - 在实际使用中,一般可以看到各种形式的版本号: - *: 任意版本
 1.1.0: 指定版本
 ~1.1.0: 1.1.0 <= 版本 < 1.2.0
 ^1.1.0: 1.1.0 <= 版本 < 2.0.0
 latest:安装最新版本。
 - *表示任意版本;
- ~前缀表示,安装大于指定的这个版本,并且匹配到 x.y.z 中 z 最新的版本;
- ^前缀在 ^0.y.z 时的表现和 ~0.y.z 是一样的,然而 ^1.y.z 的时候,就会匹配到 y 和 z 都是最新的版本;
- 特殊的是,当版本号为 ^0.0.z 或者 ~0.0.z 的时候,考虑到 0.0.z 是一个不稳定版本, 所以它们都相当于 =0.0.z。
 
- author && contributors - 项目作者以及贡献者。author是字符串形式的作者名,contributors是一个项目贡献者数组。 
- description && keywords - 项目描述和项目关键字。帮助人们在使用npm search时找到这个包。 
- license - 许可证。 
功能性字段
- scripts - 定义脚本命令。它的每一个属性,对应一段脚本。并且可以在命令行下使用npm run命令执行这段脚本。 - npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。 - 比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。 - 更多可参考阮老师的 npm scripts 使用指南 
- dependencies && devDependencies - npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件:- –save以及- –save-dev。- –save会把依赖包名称添加到package.json文件- dependencies键下,- –save-dev则添加到package.json文件- devDependencies键下。- dependencies字段指定了项目生产环境中需要的依赖,即正常运行该包时所依赖的模块,- devDependencies指定项目开发所需要的依赖项,像一些进行单元测试之类的包,比如grunt-contrib-uglify,我们用它混淆js文件,它们不会被部署到生产环境。- 它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。 
- bin - 用来指定各个内部命令对应的可执行文件的位置。 - 例如: - "bin": {
 "someTool": "./bin/someTool.js"
 }
 - 上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js 
- main - 指定包的入口程序文件。这个字段的默认值是模块根目录下面的index.js。 
- config - 用于向环境变量输出值。 - 比如: - {
 // ...
 "config" : { "port" : "8080" },
 }
 - 然后通过 - process.env.npm_package_config_port读取该值。
其他字段
- engines - 指定node的工作版本 
- man - 指定当前模块的man文档的位置。 
- preferGlobal - 布尔类型值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告。 - ... 
npm package.json文件解读的更多相关文章
- Angular  Npm  Package.Json文件详解
		Angular7 Npm Package.Json文件详解 近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ... 
- node 通过指令创建一个package.json文件及npm安装package.json
		描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ... 
- npm 和package.json 文件
		你可能还记得使用vue-cli 创建vue项目.当创建项目完成后,我们进入到项目目录,启动cmd命令窗口,输入npm install,它就会安装一堆东西(依赖),然后再输入npm run dev, 我 ... 
- npm init 命令生成package.json文件
		通过npm init 命令可以生成一个package.json文件.这个文件是 整个项目的描述文件.通过这个文件可以清楚的知道项目的包依赖关系,版本,作者等信息.每个NPM包都有自己的package. ... 
- npm init node 通过指令创建一个package.json文件及npm安装package.json
		描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ... 
- [web 前端]  Npm package.json与package-lock.json文件的作用
		本文链接:https://blog.csdn.net/u013992330/article/details/81110018 最新版nodejs中,多了一个package-lock.json文件,刚开 ... 
- npm package.json属性详解
		概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ... 
- 初学Node(二)package.json文件
		package.json简介 package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件. 在项目的根目录 ... 
- nodejs package.json详细解读
		package.json详细内容 它是这样一个json文件(注意:json文件内是不能写注释的,复制下列内容请删除注释): JavaScript { "name": "t ... 
随机推荐
- Lua代码提示和方法跳转
			前言 当在一个大型工程中编写大量的lua脚本时,代码提示和方法跳转等功能很实用,据我所了解的目前除LuaStudio之外,似乎还没有一个很好的编辑器.但今天讲述的是Idea +EmmyLua插件 达到 ... 
- 自学Python2.1-基本数据类型-字符串str(object)
			Python str方法总结 class str(object): """ str(object='') -> str str(bytes_or_buffer[, ... 
- SoapUI模拟REST MockService
			一.新建REST工程 二.添加URI 物流查询接口测试地址:http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号 三.输入入参,测试一下 ... 
- 【ANT】时间戳
			属性 说明 举例 DSTAMP 设置为当前日期,默认格式:yyyymmdd 20170309 TSTAMP 设置为当前时间,默认格式:hhmm 2007 TODAY 设置为当前日期,带完整的月份 Ma ... 
- Vue.js(一)了解Vue
			什么是Vue? 1.Vue.js是一个构建数据驱动的web界面的库.类似于Angularjs,在技术上,他重点集中在MVVM模式的View层,非常容易学习,非常容易和其他的库或已有的项目整合. 2.V ... 
- DataBase  MongoDB基础知识记录
			MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ... 
- 创建一个可用的简单的SpringMVC项目,图文并茂
			转载麻烦注明下来源:http://www.cnblogs.com/silentdoer/articles/7134332.html,谢谢. 最近在自学SpringMVC,百度了很多资料都是比较老的,而 ... 
- 常规流(Normal flow)
			连我自己把float和绝对定位,都称为脱离文档流,想想概念又不那么清晰,于是寻找了W3C资料来理解,才发觉不应该叫文档流. 资料 英文:https://www.w3.org/TR/CSS22/visu ... 
- C语言中一些不被熟知的特性
			designated initializers(c99) C99允许你对结构体中指定的变量初始化,如 struct Foo { int x; int y; int z; }; }; 指定初始化也可适用 ... 
- 手动安装cloudera manager 5.x(tar包方式)详解
			官方共给出了3中安装方式:第一种方法必须要求所有机器都能连网,由于最近各种国外的网站被墙的厉害,我尝试了几次各种超时错误,巨耽误时间不说,一旦失败,重装非常痛苦.第二种方法下载很多包.第三种方法对系统 ... 
