每个Nodejs项目的根目录下面,一般都会有一个package.json文件。该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。

package.json文件内部就是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。

基本字段

  1. name

    项目名称(npm包名)。必需字段

  2. 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。
  3. author && contributors

    项目作者以及贡献者。author是字符串形式的作者名,contributors是一个项目贡献者数组。

  4. description && keywords

    项目描述和项目关键字。帮助人们在使用npm search时找到这个包。

  5. license

    许可证。

功能性字段

  1. scripts

    定义脚本命令。它的每一个属性,对应一段脚本。并且可以在命令行下使用npm run命令执行这段脚本。

    npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。

    比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。

    更多可参考阮老师的 npm scripts 使用指南

  2. 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文件,它们不会被部署到生产环境。

    它们都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。

  3. bin

    用来指定各个内部命令对应的可执行文件的位置。

    例如:

    "bin": {
    "someTool": "./bin/someTool.js"
    }

    上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js

  4. main

    指定包的入口程序文件。这个字段的默认值是模块根目录下面的index.js。

  5. config

    用于向环境变量输出值。

    比如:

    {
    // ...
    "config" : { "port" : "8080" },
    }

    然后通过process.env.npm_package_config_port读取该值。

其他字段

  1. engines

    指定node的工作版本

  2. man

    指定当前模块的man文档的位置。

  3. preferGlobal

    布尔类型值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告。

    ...

npm package.json文件解读的更多相关文章

  1. Angular Npm Package.Json文件详解

    Angular7 Npm Package.Json文件详解   近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...

  2. node 通过指令创建一个package.json文件及npm安装package.json

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  3. npm 和package.json 文件

    你可能还记得使用vue-cli 创建vue项目.当创建项目完成后,我们进入到项目目录,启动cmd命令窗口,输入npm install,它就会安装一堆东西(依赖),然后再输入npm run dev, 我 ...

  4. npm init 命令生成package.json文件

    通过npm init 命令可以生成一个package.json文件.这个文件是 整个项目的描述文件.通过这个文件可以清楚的知道项目的包依赖关系,版本,作者等信息.每个NPM包都有自己的package. ...

  5. npm init node 通过指令创建一个package.json文件及npm安装package.json

    描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...

  6. [web 前端] Npm package.json与package-lock.json文件的作用

    本文链接:https://blog.csdn.net/u013992330/article/details/81110018 最新版nodejs中,多了一个package-lock.json文件,刚开 ...

  7. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  8. 初学Node(二)package.json文件

    package.json简介 package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件. 在项目的根目录 ...

  9. nodejs package.json详细解读

    package.json详细内容 它是这样一个json文件(注意:json文件内是不能写注释的,复制下列内容请删除注释): JavaScript { "name": "t ...

随机推荐

  1. backbone入门学习一

    初识backbone 1.Backbone是什么? Backbone是一个非常轻量级的javaScript库,可以打造为模型(Model)-视图(View)-控制器(Controller)即MVC类结 ...

  2. java中websocket的应用

    在上一篇文章中,笔者简要介绍了websocket的应用场景及优点,戳这里 这篇文章主要来介绍一下在java项目中,特别是java web项目中websocket的应用. 场景:我做了一个商城系统,跟大 ...

  3. NanUI文档 - 使用网页来设计整个窗口

    NanUI文档目录 NanUI简介 开始使用NanUI 打包并使用内嵌式的HTML/CSS/JS资源 使用网页来设计整个窗口 如何实现C#与Javascript相互掉用(待更新...) 如何处理Nan ...

  4. springboot 热部署 idea版本(转)

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...

  5. 1. 生成三行文本,过滤文本,cp不覆盖,find查找文件,sed打印行,查看系统信息,磁盘分区

  6. 用Azure AD 实现Web 应用身份认证的Multi-Factor Authentication(MFA)

    最近客户有个需求,希望把面向public的Web应用中的终端用户数据库由Azure AD来实现,同时希望可以用MFA来实现用户身份认证.这个想法非常好,通过使用Azure的managed servic ...

  7. 每周.NET前沿技术文章摘要(2017-05-24)

    汇总国外.NET社区相关文章,覆盖.NET ,ASP.NET等内容: .NET Free eBook/Guide on '.NET Microservices – Architecture for C ...

  8. [置顶] xamarin android自定义spinner

    以前弄的一个下拉框时自带的spinner,感觉好丑,实际效果实在满足不了基本的UI界面要求,还是自己动手丰衣足食,看了网上关于android中自定义spinner的文章,感觉实现原理还是比较简单,所以 ...

  9. [C#]使用Quartz.NET来创建定时工作任务

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...

  10. Spring_Spring与IoC_Bean的装配

    一.Bean的装配      bean的装配,即Bean对象的创建,容器根据代码要求来创建Bean对象后再传递给代码的过程,称为Bean的装配.  二.默认装配方式 代码通过getBean()方式从容 ...