npm包管理工具操作、理解记录,package.json与 package-lock.json

本文是 npm 包管理工具的理解和操作记录,系统的学习 npm。
本文记录是 从 node.js 官网学习 npm 模块的理解和摘要,看详情可点击npm 包管理

npm包管理

npm 是  Node.js 标准的软件包管理器。
起初是作为下载和管理 Node.js 包依赖的方式,但其现在也已成为前端 JavaScript 中使用的工具。
  • 安装所有依赖
    若项目中具有 package.json 文件,通过 npm install ,创建 node_modules 文件夹存依赖。
  • 安装单个软件包
    • npm install <pack-name>
    • –save 安装到 package.json 文件的dependencies中; //生产环境
    • –save-dev 安装到 package.json 文件的devDependencies中; //开发环境
  • 更新软件包
    • npm update :会更新全部满足版本更新需求的包
    • npm update <pack-name> :对指定单个软件包进行更新
  • 版本控制
    • 指定软件包的任何特定版本
      • npm install <pack-name>@<version>
      • 如 npm install jquery@5.1.1 --save
    • 指定库的显式版本还有助于使每个人都使用相同的软件包版本,以便整个团队运行相同的版本,直至 package.json 文件被更新。
  • 运行任务:可运行npm包
    • package.json 文件支持一种用于特定命令行任务
      • npm run <task-name>
{
  "scripts": {
    "start-dev": "node lib/server-development",
    "start": "node lib/server-production"
  },
}

在命令行中运行:
$ npm run watch
$ npm run dev
$ npm run prod

npm安装位置 与 npm 卸载

  • 本地安装
    • 默认情况下 执行 npm install 命令 , 软件包会被安装到当前文件树中的 node_modules 子文件夹下。
  • 全局安装
    • npm install -g <package-name> 安装全局
    • 全局位置 :npm root -g 命令查了确切位置。(位置不确定)
  • 本地卸载
    • npm uninstall 包名:只卸载,不在 package.json 中删除。
    • npm uninstall -S 包名:从 package.json 中的 dependencies 删除
    • npm uninstall -D 包名:从 package.json 中的 devDependencies 删除

使用或执行 npm 安装的软件包

  • 使用/引用 普通 软件包
const _ = require('包名')
  • 使用 可执行 软件包
    • 可执行软件包 会放置 node_modules/.bin/ 文件夹下
    • step1:cowsay 软件包提供了一个命令行程序 npm install cowsay
    • step2:进入 node_modules/.bin/ 打开命令行输入
      • ./node_modules/.bin/cowsay 或 npx cowsay

package.json 指南

package.json 文件时项目的清单,存储所有已安装软件包的名称和版本的地方。唯一要求遵守 JSON 格式,否则无法读取。

{
  "name": "test-project",
  "version": "1.0.0",
  "description": "A Vue.js project",
  "main": "src/main.js",
  "private": true,
  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "unit": "jest --config test/unit/jest.conf.js --coverage",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src test/unit",
    "build": "node build/build.js"
  },
  "dependencies": {
    "vue": "^2.5.2"
  },
  "devDependencies": {
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "vue-loader": "^13.3.0",
    "vue-style-loader": "^3.0.1",
  },
  "engines": {
    "node": ">= 6.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": ["> 1%", "last 2 versions", "not ie <= 8"]
}
  • name 设置了应用程序/软件包的名称。
  • version 表明了当前的版本。
  • description 是应用程序/软件包的简短描述。
  • main 设置了应用程序的入口点。
  • private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm。
  • scripts 定义了一组可以运行的 node 脚本。
  • dependencies 设置了作为依赖安装的 npm 软件包的列表。
  • devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。
  • engines 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
  • browserslist 用于告知要支持哪些浏览器(及其版本)。

package-lock.json

文件旨在跟踪被安装的每个软件包的确切版本,以便产品可以以相同的方式被 100% 复制(即使软件包的维护者更新了软件包。

可以使用 semver 表示法设置要升级到的版本(补丁版本或次版本),例如:

  • 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
  • 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
  • 如果写入的是 0.13.0,则始终使用确切的版本。

升级规则:
^: 如果写入的是 ^0.13.0,则当运行 npm update 时,会更新到补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
~: 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
: 接受高于指定版本的任何版本。
=: 接受等于或高于指定版本的任何版本。
<=: 接受等于或低于指定版本的任何版本。
<: 接受低于指定版本的任何版本。
=: 接受确切的版本。
-: 接受一定范围的版本。例如:2.1.0 - 2.6.2。
||: 组合集合。例如 < 2.1 || > 2.6。
无符号: 仅接受指定的特定版本(例如 1.2.1)。
latest: 使用可用的最新版本。

当运行 npm update 时,package-lock.json 文件中的依赖的版本会被更新。

查看 npm 包安装的版本

  • 普通-查看软件包的最新版本:npm list
  • 全局-软件包: npm list -g
  • 仅获取顶层的软件包:npm list --depth=0
  • 通过指定名称来获取软件包版本:npm list 包名
  • 安装的软件包相关依赖视图:npm list 包名
  • 查看软件包在 npm 仓库上最新的可用版本:npm view 包名 version

安装npm包的旧版本

  • npm install @
    • npm install cowsay@1.2.0
  • 列出软件包以前的所有版本
    • npm view 包名 versions
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值