package.json
定义:
package.json文件跟踪依赖关系和元数据,是配置和描述如何与程序交互和运行的中心。
它包含名称、描述和版本之类的信息,以及运行、开发以及有选择地将项目发布到 NPM 所需的信息。
示例:
{ "name": "my-project", "version": "1.5.0", "description": "Express server project using compression",//描述,搜索的时候也有用 "main": "src/index.js", "scripts": { "start": "node index.js", "dev": "nodemon", "lint": "eslint **/*.js" }, "dependencies": { "express": "^4.16.4", "compression": "~1.7.4" }, "devDependencies": { "eslint": "^5.16.0", "nodemon": "^1.18.11" }, "repository": { "type": "git", "url": "https://github.com/osiolabs/example.git" }, "author": "Jon Church", "contributors": [ { "name": "Amber Matz", "email": "example@example.com", "url": "https://www.osiolabs.com/#team" } ], "keywords": [//关键字,一个字符串数组,方便别人搜索到本模块 "server", "osiolabs", "express", "compression" ] }
字段详解
name
package.json 中最重要的属性是 name 和 version 两个属性,是npm 模块的唯一标识。
name是 package(包)的名称。名称的第一部分(如@scope/是可选的,用作名称空间)。通过搜索name来安装使用
{ "name": "@scope/name" }
version
version是 package(包)的版本
除非它是一个工作空间(workspaces)-其版本必须与指定的范围相匹配,才能选择该工作空间作为解决方案的候选对象。
"version":“x.y.z”
修复 bug,小改动,增加 z
增加了新特性,但仍能向后兼容,增加 y
有很大的改动,无法向后兼容,增加 x
homepage
包的主页地址。
bugs
包的bug跟踪主页地址。
license
包的开源协议名称。
author
包的作者。
contributors, maintainers
包的贡献者,是一个数组。
browserslist
指定该模板供浏览器使用的版本。
"browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] },
repository
包的仓库地址。
"repository": { "type": "git", "url": "git@gitlab.***.cn:****.git" },
scripts
通过设置这个可以使NPM调用一些命令脚本,封装一些功能。"scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server --progress --colors --devtool cheap-module-eval-source-map --hot --inline", "build": "cross-env NODE_ENV=production webpack --progress --colors --devtool cheap-module-source-map", "build:dll": "webpack --config webpack.dll.config.js" }
NPM 脚本的原理
npm 脚本的原理非常简单。每当执行 npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。
比较特别的是,npm run 新建的这个 Shell,会将当前目录的 node_modules/.bin 子目录加入 PATH 变量,执行结束后,再将 PATH 变量恢复原样。
这意味着,当前目录的 node_modules/.bin 子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。比如,当前项目的依赖里面有 Mocha,只要直接写 mocha test 就可以了
"test": "mocha test"
引申 cross-env:
是运行跨平台设置和使用环境变量的脚本。
使用 NODE_ENV = production来设置环境变量的时候,大多数windows命令会提示将会阻塞或者异常报错。
cross-env能够提供一个设置环境变量的scripts,这样我们就能够以unix方式在windows上设置环境变量。
安装
//npm 安装: npm install cross-env --save-dev //yarn安装: yarn add cross-env --dev
dependencies
指定依赖的其它包,这些依赖是指包发布后正常执行时所需要的,也就是线上需要的包。使用下面的命令来安装:
npm install --save packageName --save可简写为 -S
devDependencies
这些依赖只有在开发时候才需要。使用下面的命令来安装:
npm install --save-dev packageName --save-dev可简写为-D
1. ~ + 版本号:安装时不会改变大版本号和次要版本号 例如 "tslint": "~5.11.0", 表示安装5.11.x的最新版本(不低于5.11.0), 但是不安装5.12.x,也就是说;
2. ^ + 版本号:安装时不会改变大版本号 例如 "tslint": "5.11.0", 表示安装5.11.0及以上的版本,但是不安装6.0.0
3. 空 + 版本号:npm install 后,项目将会安装指定版本依赖。 例如:"tslint": "5.11.0",表示安装5.11.0的指定版本。