package.json文件配置

package.json文件是Node.js项目中的一个描述文件,执行npm init命令初始化项目后,在项目的根目录自动生成该文件。

package.json包含了项目的配置信息以及项目所需的各种模块使用npm install简写npm i命令后会自动根据package.json下载所需的模块

注: 在package.json中不能有注释否则会报错

1.package.json常见属性说明

name名称{String}

version版本{String}

private{ Boolean }
设置truenpm 就不会发布成功。
可以防止私有repositories不小心被发布出去。

description:项目描述,可用于 npm 官网搜索{String}

mainnpm包项目的主要入口文件,必须的,{ String }
默认"./index.js"

browser:main,当包为 web 包时,browser优先级mainbin:定义可执行文件{ String | Object }

man:项目手册manuel地址{ String | Array }

directories:用来描述各个功能模块存放路径{ Object }

module打包需要的入口文件

typings:TypeScript 的入口文件

files: 发布package时,控制哪些文件会发布上去{ Array | String },如:
"files": ["src","dist/*.js","types/*.d.ts"]

gitHooks代码质量检查,如:
"gitHooks": {"pre-commit": "lint-staged","commit-msg": "node scripts/verify-commit-msg.js"}

scripts:启动脚本,一般较长的命令可以设置脚本启动{ Object }

repositorygit仓库所在位置{ Object | String },如:
"repository": {"type": "git","url": "git地址"}

keywords:项目关键字,可用于 npm 官网搜索{String}

author:项目作者,只能存在一个作者{ String | Object }

contributors:贡献者{ Array }

maintainers:维护者{ Array }

license:开源协议{ String | Object }
除了设置合适的 license 类型外,还可以设置 "private": true 来避免项目发布bugs:bug地址{ String | Object }

homepage:项目官网地址{String}

dependencies:项目依赖(生产){ Object }

devDependencies:项目依赖开发{ Object }

config:设置一些用于npm包的脚本命令用到的配置参数{ Object }

peerDependencies:其他依赖{ Object }

engines:指定项目所需要node.js版本{ Object },如:
"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.属性详解

2.1 name

{ String }
项目名称
如果想将项目发布npm 上去的话,该属性必需,且保证该 name 没有占用

命名规则

官方建议

tips: 此外,包还可以前缀,将包放到同意的命名空间下(如 babel7)
如:@myorg/mypackage。

2.2 version

{ String }
项目版本号
如果想将项目发布npm 上去的话,版本号必需,且和 name 组成唯一确定的包文件。

如果想升级项目并发布,只能更改版本号
npm 的版本号是使用 nodesemver 模块解析的。
格式采用 {major}.{feature}.{patch} (主版本 . 次要版本 . 补丁版本)模式

2.3bugs

{ String | Object }
提交项目 bug方式

{
  "url" : "提交 issue地址",
  "email" : "联系邮箱"
}

tips:这两个值都非必填,如果只提供 url 地址,可以写成如下格式:

"bugs" : "提交 issue地址"

如果提供了 urlnpm bugs 命令使用这个地址。

2.4 author

{ String | Object }
项目作者,只能存在一个作者

属性为 Object 时

{
  "name" : "作者",
  "email" : "邮箱",
  "url" : "地址"
}

属性为 String 时

"author" : "作者 <邮箱> (地址)"

2.5 files

{ Array | String }
默认"*"
当别人安装你的包时,所需要安装的文件

​ 遵循规则 :

README, CHANGES, LICENSE &amp; NOTICE 支持任何后缀

​ 不管如何配置,以下文件会始终不会包含到包中:

2.6bin

{ String | Object }
定义可执行文件

 { "bin" : { "myapp" : "./cli.js" } } 

局部安装安装时会在 ./node_modules/.bin/创建一个到 "./cli.js" 的软链。
全局安装安装时会在 {prefix}/bin创建一个到 "./cli.js" 的软链。
执行 myapp 时实际上执行的是 "./cli.js"

使用方式:

{
  "name": "my-program",
  "version": "1.2.5",
  "bin": "./path/to/program"
}{
  "name": "my-program",
  "version": "1.2.5",
  "bin" : {
    "my-program" : "./path/to/program"
  }
}

注意:确保 bin 文件以 #!/usr/bin/env node 开头,否则脚本将不会在 node下运行

2.7directories

{ Object }
这个暂时属性没啥用。是用来描述各个功能模块存放路径。算是预留接口吧。

{
  "directories" : {
    "lib" : "./lib",
    "bin" : "./bin",
    "man" : "./man",
    "doc" : "./doc",
    "example" : "./example",
    "test" : "./test"
  }
}

2.8repository

{ Object | String }
代码仓库地址

GitHub : 使用 npm docs 可以找到该项目

"repository": {
  "type" : "git",
  "url" : "git地址"
}

"repository": {
  "type" : "svn",
  "url" : "git地址"
}

GitHub, GitHub gist, Bitbucket, GitLab

"repository": "npm/npm"

"repository": "github:user/repo"

"repository": "gist:11081aaa281"

"repository": "bitbucket:user/repo"

"repository": "gitlab:user/repo"

除此之外,还可以使用 directory 指定代码路径

"repository": {
  "type" : "git",
  "url" : "https://github.com/facebook/react.git",
  "directory": "packages/react-dom"
}

2.9 scripts

scripts”是一个由脚本命令组成的hash对象他们在包不同生命周期中被执行

key生命周期事件value是要运行的命令。

自定义脚本命令,在命令行通过执行npm run+变量执行这段脚本

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "dev": "NODE_ENV=dev webpack-dev-server --progress --hot --host 0.0.0.0 --port 8089",
    "test": "NODE_ENV=test webpack --config webpack.test.config.js --progress", 
    "online": "NODE_ENV=production webpack --config webpack.online.config.js --progress",
    "node": "node server.js" 
}, 

命令行输入

​ npm run dev , 对应的命令就会被执行。

这里有一个地方需要注意,当执行npm run xxx时候,node_modules/.bin/目录会在运行时被加入系统的PATH变量。

​ 当我们命令行输入:npm run build时,其实真正执行的命令是node_modules/.bin/webpack而不是webpack

​ 当你的webpack并未全局安装时,直接在命令行输入webpack是会报错的。

​ 因为你的webapck是安装在node_modules/.bin/下面的。

原理

使用npm run script执行脚本时候都会创建一个shell然后shell中执行指定的脚本

这个shell会将当前项目的可执行依赖目录(node_modules/.bin)添加环境变量path中,当执行之后之后再恢复原样。也就是说脚本命令中的依赖名会直接找到node_modules/.bin下面的对应脚本,而不需要加上路径

使用:

npm run + 变量名

注:现在为了方便常使用yarn下载依赖执行命令,所以运行项目时可以使用 yarn+变量名

2.10 config

{ Object }
设置配置属性,配合 scripts 属性使用

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

可以通过 process.env.npm_package_config_port 属性访问。也可以使用 npm config set foo:port 8001 命令改写。
webpackprocess.env功能和他有点类似。
scripts 也可以直接传参,只不过是通过 npm_config_port 属性访问

2.11 dependencies和devDependencies

执行npm i的时候自动将两者引入依赖下载到node_modules下。

这两者的区别就在于项目开发和运行时,如何安装需要依赖我们的项目分为生产环境开发环境,一般说的“项目上线”,就是打包开发环境下的代码发布到生产环境这个过程简单的说:

dependencies——生产环境

devdependencies——开发环境

开发时候,只需要考虑哪种依赖模块)是开发时候需要?还是上线时候需要?或者两者都需要,比如引入Vue时,两者都需要,我们可以使用npm i vuesavedev,再比如引入webpack

该依赖只需开发环境打包使用,线上不需要,所以我们可以使用npm i webpacksavedev

常用的命令 :

npm install module-name -save   自动模块和版本号添加到dependencies部分
npm install module-name -save-dev   自动模块和版本号添加到devdependencies部分

tips:
	'-save'可以简称为:-S
	'-save-dev'可以简称为:-D

2.12 peerDependencies

devDependencies和dependencies相似,如果你经常封装插件、使用一些ui组件库,自然对peerDependencies就不会陌生了。

{
  "name": "tea-latte",
  "version": "1.3.5",
  "peerDependencies" : { "tea": "2.x" }
}

原文地址:https://blog.csdn.net/Skty_ywh/article/details/129695474

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_31818.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注