package.json文件配置说明
1、什么是package.json
package.json文件是Node.js项目中的一个描述文件,执行npm init命令初始化项目后,在项目的根目录下自动生成该文件。package.json包含了项目的配置信息以及项目所需的各种模块,使用npm install(简写:npm i)命令后会自动根据package.json下载所需的模块。基本信息如下:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": { }
}
2、package.json的属性说明
- name:名称
- version:版本
- description:描述
- main:npm包项目的主要入口文件,必须的
- module:打包需要的入口文件
- typings:TypeScript 的入口文件
- files: 发布package时,控制哪些文件会发布上去,如:
"files": ["src","dist/*.js","types/*.d.ts"]
- gitHooks:代码质量检查,如:
"gitHooks": {"pre-commit": "lint-staged","commit-msg": "node scripts/verify-commit-msg.js"}
- scripts:启动脚本,一般较长的命令可以设置脚本启动,详情请看2.1
- repository:git仓库所在位置,如:
"repository": {"type": "git","url": "git+https://github.com/ForeverS2C"}
- keywords:关键字
- author:作者
- license:开源协议
- bugs:bug地址
- homepage:主页
- devDependencies:项目依赖,详情请看2.2
- config:设置一些用于npm包的脚本命令会用到的配置参数
- peerDependencies:其他依赖包,详情请看2.3
- engines:指定项目所需要的node.js版本,如:
"engines": {"node": ">=8.9.1","npm": ">=5.5.1","yarn": ">=1.3.2"}
- browserslist:支持的浏览器,如:
"browserslist": ["last 3 Chrome versions","last 3 Firefox versions","Safari >= 10","Explorer >= 11","Edge >= 12","iOS >= 10","Android >= 6"]
2.1、scripts
scripts可以简单的理解为:自定义脚本命令,在命令行中通过执行npm run+变量
来执行这段脚本
原理:
使用npm run script执行脚本的时候都会创建一个shell,然后在shell中执行指定的脚本。这个shell会将当前项目的可执行依赖目录(node_modules/.bin)添加到环境变量path中,当执行之后之后再恢复原样。也就是说脚本命令中的依赖名会直接找到node_modules/.bin下面的对应脚本,而不需要加上路径。
使用:
npm run + 变量名称
如上图中,即可用npm run dev || npm run start || npm start来启动项目四个可以简写的脚本执行命令
npm start === npm run start
npm stop === npm run stop
npm test === npm run test
npm restart === npm run stop && npm run restart && npm run start
2.2、dependencies和devDependencies
执行npm i的时候会自动将两者引入的依赖下载到node_modules下。这两者的区别就在于项目开发和运行时,如何安装所需要的依赖。我们的项目分为生产环境和开发环境,一般说的“项目上线”,就是打包开发环境下的代码发布到生产环境的这个过程。简单的说:
dependencies------生产环境
devdependencies------开发环境
在开发的时候,只需要考虑哪种依赖(模块)是开发的时候需要?还是上线的时候需要?或者两者都需要,比如引入Vue时,两者都需要,我们可以使用npm i vue -save-dev,再比如引入webpack,该依赖只需开发环境下打包使用,线上不需要,所以我们可以使用npm i webpack -save-dev
常用的命令有:
npm install module-name -save 自动把模块和版本号添加到dependencies部分
npm install module-name -save-dev 自动把模块和版本号添加到devdependencies部分
注意:
- '-save'可以简称为:-S
- '-save-dev'可以简称为:-D
2.3、peerDependencies
devDependencies和dependencies相似,如果你经常封装插件、使用一些ui组件库,自然对peerDependencies就不会陌生了。
- 问题的产生:
在项目结构中,你引入了一个父类的包(A),当你需要引入类似父类下的一个子类包(B)时,是做不到的,因为node只会在项目的node_modules文件夹中找B,并不会先找到A,再从A文件夹找B。 - 问题的解决:
引入peerDependencies配置:{ "peerDependencies": { "B": "1.0.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的 ...
随机推荐
- 「面向 offer 学算法」笔面试大杀器 -- 单调栈
目录 前言 单调栈 初入茅庐 小试牛刀 打怪升级 出师试炼 前言 单调栈是一种比较简单的数据结构.虽然简单,但在某些题目中能发挥很好的作用. 最近很多大厂的笔试.面试中都出现了单调栈的题目,而还有不少 ...
- 使用Built-in formatting来创建log字符串
在一次哦测试中,sonar-qube总是报Use the built-in formatting to contruct this argument, 在网上查了一下,原来它是推荐这样做: log.i ...
- Mybati源码解析篇之六剑客!!!
目录 前言 环境版本 Mybatis的六剑客 SqlSession 有何方法 语句执行方法 立即批量更新方法 事务控制方法 本地缓存方法 获取映射方法 有何实现类? Executor 实现类 Base ...
- Kubernetes-5:搭建企业级私有仓库Harbor
搭建企业级私有仓库Harbor 安装需求 python版本 >= 2.7 Docker引擎版本 >= 1.10 docker-compose版本 >= 1.6.0 安装环境 一.Py ...
- path.resolve和path.join的区别
// test.js const path = require('path') let x1 = path.resolve('/目录1/目录2', '/目录3/目录4/') let x2 = path ...
- jzoj 6798. 【2014广州市选day2】regions
Description 在平面上堆叠着若干矩形,这些矩形的四边与平面X坐标轴或Y坐标轴平行.下图展示了其中一种情况,3个矩形的边将平面划分成8个区域: 下面展示了另一种稍稍复杂一些的情况: 你的任务是 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- os.walk模块查找目录下的所有txt文件
- Linux实战(7):centos7安装xrdp
系统环境:最小化安装,无安装桌面化 操作 yum更新 yum -y update 安装依赖. tigervnc-server.xrdp .GNOME Desktop yum -y install ep ...
- python实现多分类评价指标
1.什么是多分类? 参考:https://www.jianshu.com/p/9332fcfbd197 针对多类问题的分类中,具体讲有两种,即multiclass classification和mul ...