package.json文件
http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc7(copy)
通常我们使用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
name
和version
是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(较少用)
这个字段用于设置发布时候的一些设定。尤其方便你希望发布前设定指定的tag
或registry
。
如下:

- {
- "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"
- }
- }
package.json文件的更多相关文章
- 初学Node(二)package.json文件
package.json简介 package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,一般每一个Node项目的根目录下都有一个package.json文件. 在项目的根目录 ...
- node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件. 一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包; 完成name,varsion....license项的 ...
- Nodejs package.json文件介绍
每个npm的安装包里面都会包含一个package.json,通常这个文件会在包的根目录下. 这个文件很类似于.net项目中的.csproj+AssemblyInfo.cs+App.config文件,主 ...
- 使用grunt-init自动创建gruntfile.js和package.json文件
使用grunt-init可以自动创建gruntfile.js和package.json文件.下面说一下过程: 1.全局安装grunt-init npm install -g grunt-init 2. ...
- npm package.json文件解读
每个Nodejs项目的根目录下面,一般都会有一个package.json文件.该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据). pa ...
- npm 和package.json 文件
你可能还记得使用vue-cli 创建vue项目.当创建项目完成后,我们进入到项目目录,启动cmd命令窗口,输入npm install,它就会安装一堆东西(依赖),然后再输入npm run dev, 我 ...
- package.json文件配置信息
1.概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文 ...
- npm init 命令生成package.json文件
通过npm init 命令可以生成一个package.json文件.这个文件是 整个项目的描述文件.通过这个文件可以清楚的知道项目的包依赖关系,版本,作者等信息.每个NPM包都有自己的package. ...
- package.json文件中dependencies和devDependencies的区别
在工作和学习中,我经常会用的npm 下载各种包,有时就会遇到各种npm 的形式,现在就捋一捋 首先要先了解 package.json文件中dependencies和devDependencies的 ...
- Angular Npm Package.Json文件详解
Angular7 Npm Package.Json文件详解 近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...
随机推荐
- 【机器学习】Linear least squares, Lasso,ridge regression有何本质区别?
Linear least squares, Lasso,ridge regression有何本质区别? Linear least squares, Lasso,ridge regression有何本质 ...
- 浅谈python中字典append 到list 后值的改变问题
看一个例子 ? 1 2 3 4 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变 ...
- CGAL 属性配置
libgmp-10.lib libmpfr-4.lib boost_system-vc120-mt-gd-1_63.lib D:\dev\CGAL-4.9\include D:\dev\CGAL-4. ...
- P1224 [NOI2013]向量内积
传送门 发现这个内积和矩乘有点像,考虑构造一个 $n$ 行 $m$ 列的矩阵 $A$,每一行都是一个题目给定的 $m$ 维向量 设 $B=AA^T$ ,其中 $A^T$ 为 $A$ 的转置矩阵,那么对 ...
- Hibernate 初体验
为什么会产生 Hibernate Mybatis 这类的dao层框架 传统的jdbc 虽然执行速度很快,但是开发效率很低,随着面向对象开发的设计思想,在面向对象编程中 将对象 进行持久化,存入关系型的 ...
- centos7配置fastdfs集群(5.09)
centos7配置fastdfs集群(5.09) 2017年03月10日 23:34:26 带鱼兄 阅读数 1564 版权声明:本文为博主原创文章,转载请注明出处. https://blog.c ...
- 14.AutoMapper 之依赖注入(Dependency Injection)
https://www.jianshu.com/p/f66447282780 依赖注入(Dependency Injection) AutoMapper支持使用静态服务定位构建自定义值解析器和自定 ...
- 企业面试题|最常问的MySQL面试题集合(一)
问题1:char.varchar的区别是什么?varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么?DEL ...
- 史上最全的大厂Mysql面试题在这里
1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 从:io线程——在使用star ...
- 浅谈XXE
转自FReeBUF 0×00. 介绍 现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook.paypal等等. 举个例 ...