通常我们使用npm init命令来创建一个npm程序时,会自动生成一个package.json文件。package.json文件会描述这个NPM包的所有相关信息,包括作者、简介、包依赖、构建等信息,格式是严格的JSON格式。

常用命令

npm i --save packageName   安装依赖包

npm i --save-dev packageName

npm i webpack@1.2.1   安装指定版本的包,版本号用@符号连接

属性介绍

name

nameversion是package.json中最重要的两个字段,也是发布到NPM平台上的唯一标识,如果没有正确设置这两个字段,包就不能发布和被下载。

version

包的版本号。如"1.0.0"。

description

包的描述信息,将会在npm search的返回结果中显示,以帮助用户选择合适的包。

keywords

包的关键词信息,是一个字符串数组,同上也将显示在npm search的结果中。

homepage

包的主页地址。

bugs

包的bug跟踪主页地址。

license

包的开源协议名称。

author

包的作者。

contributors, maintainers

包的贡献者,是一个数组。

files(较少用)

包所包含的所有文件,可以取值为文件夹。通常我们还是用.npmignore来去除不想包含到包里的文件。

main

包的入口文件。

bin(较少用)

如果你的包里包含可执行文件,通过设置这个字段可以将它们包含到系统的PATH中,这样直接就可以运行,很方便。

man(较少用)

为系统的man命令提供帮助文档。帮助文件的文件名必须以数字结尾,如果是压缩的,需要以.gz结尾。

"man": ["./man/foo.1", "./man/bar.1", "./man/foo.2" ]

directories(较少用)

CommonJS包所要求的目录结构信息,展示项目的目录结构信息。字段可以是:lib, bin, man, doc, example。值都是字符串。

repository

包的仓库地址。

"repository": {
"type": "git",
"url": "git+https://github.com/rainnaZR/es6-react.git"
},

scripts

通过设置这个可以使NPM调用一些命令脚本,封装一些功能。

"scripts": {"start": "babel-node src/pages/index.js",
"build": "webpack --config config/webpack.config.js",
"watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress"
}

config

添加一些设置,可以供scripts读取用,同时这里的值也会被添加到系统的环境变量中。

"config": {
"port": "8080"
}

npm start的时候会读取到npm_package_config_port环境变量。

dependencies

指定依赖的其它包,这些依赖是指包发布后正常执行时所需要的,也就是线上需要的包。使用下面的命令来安装:

npm install --save packageName

如果是开发中依赖的包,可以在devDependencies设置。

devDependencies

这些依赖只有在开发时候才需要。使用下面的命令来安装:

npm install --save-dev packageName 

peerDependencies

相关的依赖,如果你的包是插件,而用户在使用你的包时候,通常也会需要这些依赖(插件),那么可以将依赖列到这里。

karma, 它的package.json中有设置,依赖下面这些插件:

"peerDependencies": {
"karma-jasmine": "~0.1.0",
"karma-requirejs": "~0.2.0",
"karma-coffee-preprocessor": "~0.1.0",
"karma-html2js-preprocessor": "~0.1.0",
"karma-chrome-launcher": "~0.1.0",
"karma-firefox-launcher": "~0.1.0",
"karma-phantomjs-launcher": "~0.1.0",
"karma-script-launcher": "~0.1.0"
}

bundledDependencies

绑定的依赖包,发布的时候这些绑定包也会被一同发布。

optionalDependencies(较少用)

即使这些依赖没有,也可以正常安装使用。

engines(较少用)

指定包运行的环境。

"engines": {
"node": ">=0.10.3 < 0.12",
"npm": "~1.0.20"
}

os(较少用)

指定你的包可以在哪些系统平台下运行。

"os": [ "darwin", "linux", "!win32" ]

cpu(较少用)

可以指定包运行的cpu架构。

private

设为true这个包将不会发布到NPM平台下。

publishConfig(较少用)

这个字段用于设置发布时候的一些设定。尤其方便你希望发布前设定指定的tagregistry

如下:

{
"name": "react",
"version": "1.0.0",
"description": "Command line instructions",
"keywords": [
"react",
"es6",
"react with es6"
],
"homepage": "https://github.com/rainnaZR/es6-react",
"bugs": {
"url": "https://github.com/rainnaZR/es6-react",
"email": "111@163.com"
},
"license": "ISC",
"author": "ZRainna",
"main": "src/pages/index.js",
"directories": {
"tests": "tests",
"lib":"lib",
"docs":"docs"
},
"repository": {
"type": "git",
"url": "git+https://github.com/rainnaZR/es6-react.git"
},
"scripts": {"start": "babel-node src/pages/index.js",
"build": "webpack --config config/webpack.config.js",
"watch": "webpack-dev-server --config config/webpack.config.js --hot --inline --progress"
},
"babel": {
"presets": [
"es2015-node5"
]
},
"devDependencies": {
"webpack": "^1.13.2",
"webpack-dev-server": "^1.16.1"
},
"dependencies": {
"babel-loader": "^6.2.5",
"babel-preset-es2015": "^6.14.0",
"babel-preset-react": "^6.11.1",
"react": "^15.3.2",
"react-dom": "^15.3.2",
"react-redux": "^4.4.5",
"react-router": "^2.8.1",
"redux": "^3.6.0"
}
}

参考:
https://www.ijser.cn/npm-package-json-document/

npm中package.json详解的更多相关文章

  1. (译)package.json详解

    原文链接 概述 本文囊括了所有package.json文件中你需要知道的细节.注意package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量.该文件描述的很多行为都受np ...

  2. package.json 详解

    使用package.json  属性说明 name - 包名. version - 包的版本号. description - 包的描述. homepage - 包的官网 url . author - ...

  3. VSCode插件开发全攻略(三)package.json详解

    更多文章请戳VSCode插件开发全攻略系列目录导航. package.json 在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先 ...

  4. React package.json详解

    概述: 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件 ...

  5. package.json详解

    1.概念 Node.js项目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块的描述文件,被称为package.json 亦即:模块的描述文件 = package.j ...

  6. Javascript模块化开发1——package.json详解

    一.环境安装 Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/. 在该页面你可以根据不同平台系统选择你需要的 Node.js 安装包. Node. ...

  7. package.json详解以及package-lock.json的作用

    一.创建 package.json输入如下命令之后,会要求填写基本的配置信息,这里,我们选择一路回车即可,待生成 package.json 文件之后,再来配置. npm init 二.配置 packa ...

  8. vue package.json 详解

    示例: { "name": "scrm", "version": "0.1.0", "private" ...

  9. npm的package.json字段含义中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值 ...

随机推荐

  1. C# 得到sqlserver 数据库存储过程,触发器,视图,函数 的定义

    经常从 生产环境 到测试环境, 需要重新弄一整套的数据库环境, 除了表结构以及表结构数据,可以用动软代码生成器 生成之外, 像 存储过程,触发器,等,好像没有批量操作的,意义哥哥农比较麻烦, 所以最近 ...

  2. JavaScript Patterns 6.4 Prototypal Inheritance

    No classes involved; Objects inherit from other objects. Use an empty temporary constructor function ...

  3. UEFI安装Kali Linux 1.1.0记录

    现在使用Kali Linux 1.1.0, UEFI启动,使用Fcitx的拼音输入法,词库实在不爽,将就写一写. 本文地址: http://www.cnblogs.com/go2bed/p/42954 ...

  4. 修改TFS客户端的工作区类型

    TFS系统存在两种工作区类型:"​本地"和"服务器".默认情况下,用户使用本地工作区实现代码管理. 但是在用户端代码文件特别多(超过10万个文件)时,由于每次启 ...

  5. [转]ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略

    本文转自:http://blog.csdn.net/chenhongwu666/article/details/41392529/ asp.net UpdatePanel实现异步局部刷新 如有雷同,不 ...

  6. [转]MongoDB基本命令用

    本文转自:http://www.cnblogs.com/liyonghui/p/mongodb.html 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输 ...

  7. java基础算法之冒泡排序

    接触冒泡算法还是大一了,学习C语言的冒泡算法.现在唯一记得就是冒泡与选择了.出来刚刚工作的时候觉的算法基本没撒用处,现在发现这些都是很好的基础.因此自己也准备重新拾起这些知识. 冒泡排序 泡排序是一种 ...

  8. 应用程序Cache对象到高性能Memcached学习之路

    来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...

  9. java函数参数默认值

    java函数参数默认值 今天,需要设定java函数参数的默认值,发现按照其它语言中的方法行不通 java中似乎只能通过函数的重载来实现 函数参数默认代码

  10. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...