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的指定版本。

 

posted @ 2022-07-19 16:23  梁涛999  阅读(73)  评论(0编辑  收藏  举报