1. 什么是package.json

  1. 官方定义:管理本地安装的npm软件包管理工具
  2. 其他定义

    1. a)包含package.json文件描述的程序的文件夹。
    2. b)包含(a)的压缩tarball
    3. c)解析为(b)的URL
    4. d)<name>@<version>用(c)在注册表上发布的A
    5. e)<name>@<tag>指向(d)的A
    6. F)甲<name>,其具有latest满足标签(E)。
    7. ggit克隆后得到(a)的URL
    8. // 有点看不懂

    2.它可以干什么

  3. 列出您的项目所依赖的软件包。

  4. 允许您使用语义版本控制规则指定项目可以使用的软件包的版本。
  5. 使您的构建具有可复制性,因此易于与其他开发人员共享。

    3.如何快速生成一个package.json

    ```

    需要手动填写默认信息,一半我们会在编辑器中修改,这样更加的方便,所以更推荐下方的写法

npm init or npm init —yes (初始化一个空的package.json文件) or # 简写 npm init -y

  1. 1. 这是通过`npm init -y `创建的packages.json文件
  2. ```json
  3. 这是通过 npm init -y生成的package.json
  4. 请注意如果文件路径包含中文请更换成英文,否则会报错
  5. {
  6. "name": "my_npm-abc",// 仅支持小写字母加"_","-"
  7. "version": "1.0.0",
  8. "description": "",
  9. "main": "index.js",
  10. "scripts": {
  11. "test": "echo \"Error: no test specified\" && exit 1"
  12. },
  13. "keywords": [],
  14. "author": "",
  15. "license": "ISC"
  16. 补充:
  17. "dependencies":{
  18. "包名": "版本号"
  19. "vue": "^2.6.10",
  20. },
  21. "devDependencies":{
  22. "包名": "版本号"
  23. "vue-style-loader": "^4.1.2",
  24. }
  25. }
  • name:当前目录名称(也是你最后发布到npm上的包名称)
  • version:默认版本号 1.0.0(大版本.小版本.补丁版)
    • 大版本,做了不兼容的API修改
    • 小版本,添加了向后兼容的功能
    • 补丁版,做了向后兼容的bug修复
  • description:描述这个包的信息,或者为空字符串 "",有助于别人发现你的包。
  • main:默认为index.js(入口文件),当前包程序的入口(定义了 npm 包的入口文件,browser 环境和 node 环境均可使用)
  • scripts:默认情况下会创建一个空test脚本
  • keywords:描述这个包的关键字,或者为空字符串 "",有利于npm搜索框展示你的包
  • author:这个包的作者 或者为空字符串 ""
  • license: 使用许可说明
  • dependencies: 开发环境 和 生产环境 需要的包
  • devDependencies: 仅开发环境依赖和打包时候依赖的包,
  • 注意
    1. name是必须含有的,只能是小写英文,可以含有破折号和下划线
    2. version是必须的 遵循semver规范
    3. 如果中没有描述字段package.json,npm将使用README.md或README 的第一行。该描述可帮助人们在搜索npm时找到您的包裹,因此在中进行自定义描述package.json对于使您的包裹更容易查找绝对有用
    4. 请注意如果文件路径包含中文请更换成英文,否则会报错(创建后更改成中文不影响,因为name只能是小写的)

以下为其他附加字段解释信息

your don`t bugs:”project@hostname.com”

  1. - contributors:贡献者,所有参与当前项目贡献的人员姓名都可以在这里列出来
  2. - browser: 定义 `npm` 包在 browser 环境下的入口文件
  3. - module : 定义 `npm` 包的 ESM 规范的入口文件,browser 环境和 node 环境均可使用
  4. - **bin:**
  5. 它是一个命令名和本地文件名的映射。在安装时,如果是全局安装(-g),npm将会使用符号链接把这些文件链接到prefix/bin,如果是本地安装,会链接到./node_modules/.bin/。<br />这样我们就可以在命令行中使用一个包提供的命令,<br />ps:设置完bin命令后请运行`npm link后,`才可以在命令行中使用
  6. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/539682/1595475105069-4d4de1a0-01b4-4961-a0b8-c63fcd11e3c0.png#align=left&display=inline&height=537&margin=%5Bobject%20Object%5D&name=image.png&originHeight=537&originWidth=1116&size=51763&status=done&style=none&width=1116)
  7. - cpu:设置指定cpu可以使用我的包,也可以将架构列入黑名单
  8. ```json
  9. "cpu":["x64","!arm","!mips"]
  • os:设置指定系统可以使用我的包
    1. "os" : [ "darwin", "linux","!win32" ]

4.设置值init 默认属性

如果想给设置一些默认属性,不用每次init之后再去填写

npm config set init.author.name "xxx"
npm config set init.author.email "xxx@gmail.com"
npm config set init.author.url "xxx.com"
npm config set init.license "MIT"
......

image.png
*注:

  • 在终端输入 npm config edit查看配置文件信息
  • 如果要编辑全局npm设置,使用npm config edit -g


5.安装package

  1. 本地安装 ``` 一次安装一个 npm install

一次安装多个 npm install

安装指定版本号(包尾添加版本号) npm install @3.3.3


- 安装的包仅在开发环境使用 **写入到 devDependencies 对象**

安装的包仅在开发环境使用 写入到 dependencies 对象 npm install —save-dev or npm install -D or # 简写 npm i -D


- 安装的包开发生产环境都需要使用 **写入到 dependencies 对象**

安装的包开发生产环境都需要使用 写入到 devDependencies 对象 npm install —save or npm install -S or # 简写 npm i -S


2. 全局安装

一次安装一个 npm install -g

一次安装多个 npm install … -g


3. 全局安装和本地安装的区别
>  全局安装多半是在命令行中使用,本地安装是在当前项目中使用

<a name="3Q9y5"></a>
#### 6.更新package

1. 更新项目中过时的package

npm update


2. **问题**,但这个命令会更新项目中所有过时的package,但我们并不想更新所有的依赖,这样可能会有意外的问题发生
2. **解决**: 安装指定的项目包,那个需要更新就安装那个

npm install


4. 查看当前项目中有哪些包过时了

没有过时的包 不会有任何输出

npm untdated

![image.png](https://cdn.nlark.com/yuque/0/2020/png/539682/1594963069279-d9884ce6-15ea-4f56-b728-8c13e50729dd.png#align=left&display=inline&height=393&margin=%5Bobject%20Object%5D&name=image.png&originHeight=393&originWidth=620&size=28560&status=done&style=none&width=620)

5. 更新全局所有的包

更新全部 npm update -g 更新一个 npm update -g


6. 查找全局中所有需要更新的包

npm outdated -g —depth=0

![image.png](https://cdn.nlark.com/yuque/0/2020/png/539682/1594966547585-64ca2b53-1ef1-4676-a66b-358262d634d2.png#align=left&display=inline&height=106&margin=%5Bobject%20Object%5D&name=image.png&originHeight=129&originWidth=612&size=11354&status=done&style=none&width=501)
<a name="DIuzd"></a>
#### 7.卸载 package

1. 卸载本地包

npm uninstall


2. 卸载全局的包

npm uninstall -g


<a name="do3JN"></a>
#### 8.关于 npm script
在生成的 `package.json` 文件中,有一个 `scripts` 对象,在这个对象中,`npm` 允许使用 `scripts` 字段定义脚本命令。
```json

  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "staging": "vue-cli-service build --mode staging"
  },

scripts对象中每一个key对应的value 都是一个脚本命令,我们可以通过npm run <key>的方式去使用它 (如npm run serve)

9. npm scripts 是如何工作的

点我调转 sctipts链接