Node第三章(package.json)

350 阅读5分钟

node第三章( npm Package json)

npm

npm (全称 Node Package Manager)是node.js的包管理工具,它是一个基于命令行的工具,用于开发者

在自己项目中安装、升级、移除和管理依赖项

www.npmjs.com/

  • 类似于PHP的工具:Composer。它是 PHP 的包管理器,可以用于下载、安装和管理 PHP 的依赖项,类似于 npm。
  • 类似于 Java 的工具:Maven。它是 Java 的构建工具和项目管理工具,可以自动化构建、测试和部署 Java 应用程序,类似于 npm 和 webpack 的功能。
  • 类似于 Python 的工具:pip。它是 Python 的包管理器,可以用于安装和管理 Python 的依赖项,类似于 npm。
npm命令
  1. npm init : 初始化一个新的npm项目,创建package.json文件

    快速生成: npm init --y 快速初始化npm项目 但是 文件名不能包含中文名

  2. npm install : 根据package.json 文件 下载依赖 且会在当前目录存放一个node_modules。

    简写:npm i

    注意:如果没有package-lock.json 文件也会生成 如果有就会比较lock文件与package.json是否一致 如果不一致就更新lock里面文件

  3. npm install <package-name> : 安装指定包,并将其添加到package.json 文件生产依赖中(npm5.0.0)

    简写:npm i <package-name>

  4. npm install <package-name> --save : 安装指定包,并将其添加到package.json 文件生产依赖中(低版本)

    简写:npm i <package-name>

    注意: 因为自 npm 5.0.0 版本开始,npm install命令默认就会保存依赖信息到package.json文件中,所以--save选项已经不再需要了。如果你使用的是npm 5.0.0或更高版本,你可以直接使用npm i <package-name>来安装并保存依赖。

  5. npm install <package-name> --save-dev:安装指定的包,并将其添加到 package.json 文件中的开发依赖列表中。

    简写:npm i <package-name> -D

  6. npm install <page-name> -g 全局安装指定的包

    相同写法 :npm install -g <package-name>

    简写 :npm i <package-name> -gnpm i -g <package-name>

  7. npm update <package-name> : 更新指定的包

    简写:npm up <package-name>

  8. npm uninstall <package-name> 卸载指定的包

    简写:npm un <package-name>

  9. npm run <script-name> : 执行package.json文件里面script中自定义命令

  10. npm search <keyword> : 搜索 npm 库中包含指定关键字的包

  11. npm info <package-name> : 查看包的详细信息

  12. npm list :列出当前项目中安装的所有包

  13. npm outdated : 列出当前项目 需要更新的包

  14. npm audit : 检查该项目的依赖项是否出现安全漏洞

  15. npm publish 将自己开发的包发布的npm官网中

  16. npm login 登录自己npm账号

  17. npm logout 退出自己npm账号

  18. npm link 将本地模块链接到全局的node_modules 目录下

  19. npm config list 用于列出 npm配置信息 。执行该命令可以查看当前系统和用户级别的所有npm配置信息以及当前项目的配置信息(如果在当前项目执行该命令)

  20. npm get registry 用户获取用户当前npm镜像源,registry配置项用于npm指定下载地址,如果从未设置过默认是官方镜像源

  21. npm set registry<registry-url> 将registry设置指定的url

  22. npm cache clean 清除缓存

更多命令查看 docs.npmjs.com/cli-documen…

package.json

执行npm init 可以初始化package.json

  1. name : 项目中的名称,必须是唯一 通常采用大小字母和连字符组合使用

  2. version :项目版本号 通常采用语义化版本规范

  3. description : 项目描述

  4. main : 项目的主入口文件路径,通常是一个JavaScript文件

  5. keywords :项目的关键字列表 方便他人通过npm搜索发现该项目

  6. type :指定模块的类型这个属性的主要作用是确定 .js 文件应该被当作 CommonJS 模块还是 ES 模块。

  7. author : 作者的信息 包含 姓名 邮箱 网址 等

  8. license 项目的许可证类型 可以是自定义的许可证类型或者常见的许可证类型(MIT APache 等)

  9. dependencies : 项目中所依赖的包 这些包会在执行npm i 自动执行

  10. devDependencies 项目开发过程中所需要的包 这些包不会随项目一起发布 他只是开发环境需要使用

  11. peerDependencies :这是一个对等依赖,也就是你使用的这个包的前提是必须包含另一个包

    举例:假如你在使用Element-Puls这个UI框架,使用的前提是必须下载vue3,AntDesing依赖于React React-dom

  12. scripts:定义了一些脚本命令,比如启动项目、运行测试等。

    • 配置后我们可以通过 npm run 命令的key执行这个命令
      • npm run start
     "scripts": {
       "start": "node ./index.js",
     }
    
    • npm run startnpm start的区别是什么?
      • 他们是等价的,但不是所有命令都能省略 run
      • 对于常用的start test stop restart 可以省略run 直接执行 npm test
  13. bin : 字段用于指定某些脚本作为可执行文件。这些脚本可以在命令行中直接运行,而不需要 node 命令。

  14. repository:项目代码仓库的信息,包括类型、网址等。

  15. bugs:项目的 bug 报告地址。

  16. homepage:项目的官方网站地址或者文档地址。

依赖的版本管理

npm的包通常需要遵循semver版本的规范

semver版本规范是X.Y.Z

  • X主版本号(major): 当你有重大更新,并且不兼容以前的版本
  • Y次版本号(minor):新增了某些功能并且功能你做了向下兼容
  • Z修订号(patch):没有新的功能,修复了一些bug,优化了某个功能

当执行npm install的时候~^没有符号的区别

  • 举例
      "dependencies": {
       "vue":"3.2.0",
       "dayjs":"^1.11.13",
       "axios": "~1.7.9"
     }
  • x.y.z :表示一个明确的版本号,永远不会更新和变动;
  • ^x.y.z :表示x是保持不变的,y和z永远安装最新的版本;
  • ~x.y.z :表示x和y保持不变的,z永远安装最新的版本;