Vuejs package.json解析

本文详细介绍npm包管理器的使用方法,包括如何创建和更新package.json文件、安装和卸载依赖包、管理本地与全局包等核心操作。文章还介绍了如何通过npm命令行工具简化日常开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package.json 文件是用来管理本地安装 npm 包的唯一文件。它描述了当前项目依赖的包的列表,包含项目依赖包的版本,便于项目管理和移植

一、创建
1、npm init 即可在当前目录创建一个 package.json 文件,跟着步骤选项,手动创建package.json文件
2、npm init --yes 可以跳过回答问题步骤,直接生成默认值的 package.json 文件


二、package.json两部分

  • “name” :全部小写,没有空格,可以使用下划线或者横线
  • “version” :x.x.x 的格式,符合“语义化版本规则”  

比如:

{
  "name": "shixinzhang-demo-package",
  "version": "1.0.0"
}

其他内容:

  • description:描述信息,有助于搜索,如果 package.json 中没有 description 信息,npm 使用项目中的 README.md 的第一行作为描述信息。这个描述信息有助于别人搜索你的项目,因此建议好好写 description 信息。
  • main: 入口文件,不固定,可自定义
  • scripts:支持的脚本,默认是一个空的 test
  • keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
  • author:作者信息
  • license:默认是 MIT
  • bugs:当前项目的一些错误信息,如果有的话

我们可以为 init 命令设置一些默认值

> npm set init.author.email "shixinzhang2016@gmail.com"
> npm set init.author.name "shixinzhang"
> npm set init.license "MIT"

指定依赖的包

在 package.json 文件中指定项目依赖的包,这样复制项目时,可以使用 npm install 下载

包有两种依赖方式:

  • dependencies:在生产环境中需要用到的依赖
  • devDependencies:在开发、测试环境中用到的依赖,在上线打包后的代码是不存在的

依赖包版本选择:

  • ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
  • *会匹配最新版本的依赖包,但会产生兼容问题,一般不推荐

版本号规范
  项目的版本号都是从 1.0.0 版本开始。以后要升级版本应该遵循以下标准:

  • 补丁版本:解决了 Bug 或者一些较小的更改,增加最后一位数字,比如 1.0.1
  • 小版本:增加了新特性,同时不会影响之前的版本,增加中间一位数字,比如 1.1.0
  • 大版本:大改版,无法兼容之前的,增加第一位数字,比如 2.0.0

安装 package

使用 npm 安装 package 有两种方式:本地(当前项目路径)安装 或者 全局安装

  • 如果你只是想在当前项目里用 require() 加载使用,那你可以安装到本地 ,npm install 默认就是安装到本地的
  • 如果你想要在命令行里直接使用,比如 grunt CLI,就需要安装到全局了

如果在你的项目里有 package.json 文件,运行 npm install 后它会查找文件中列出的依赖包,然后下载符合语义化版本规则的版本。

npm install 默认会安装 package.json 中 dependencies 和 devDependencies 里的所有模块。

如果想只安装 dependencies 中的内容,可以使用 --production 字段:

npm install --production

本地安装 package

npm 使用下面的命令下载一个包:

npm install <package_name>

后面就是要安装包的名称。这个命令会在当前目录创建一个 node_modules 目录,然后下载我们指定的包到这个目录中。

安装指定版本:

npm install 默认安装最新版本,如果想要安装指定版本,可以在库名称后加 @版本号

$ npm install sax@latest
$ npm install sax@0.1.1
$ npm install sax@">=0.1.0 <0.2.0"
  • 如果当前项目有 package.json 文件,下载包时会下载这个文件中指定的版本; 
  • 如果当前项目中没有 package.json 文件,就会下载指定包的最新版本。
如果下载报错:npm install error saveError ENOENT: no such file or directory, open '/Users/zhangshixin/package.json'
解决办法: 
- 在目录下执行 npm init 创建 package.json,输入初始化信息 
- 然后再执行下载命令

安装参数 --save 和 --save -dev

添加依赖时我们可以手动修改 package.json 文件,添加或者修改 dependencies devDependencies 中的内容即可。

另一种方式是用命令行,在使用 npm install 时增加 --save 或者 --save -dev 后缀:

  • npm install <package_name> --save 表示将这个包名及对应的版本添加到 package.json的 dependencies
  • npm install <package_name> --save-dev 表示将这个包名及对应的版本添加到 package.json的 devDependencies

使用下载好的包

下载后 node_modules 文件夹中有要使用的包,我们就可以使用其中的代码了。

比如在 Node.js 项目中,我们可以用 require(XXX) 引入它。

在使用 require('lodash') 后引入了 lodash 库,然后调用了它的 without() 方法,这个方法可以去除第一个数组参数中与第二个参数重复的数据。

保存这个文件后,使用 node index.js 运行这个文件,成功的话就可以得到运行结果[2,3];

如果报错,先先在当前目录下重新运行 npm install lodash 安装,看是否报错。

更新本地 package

有时候我们想知道依赖的包是否有新版本,可以使用 npm outdated 查看,如果发现有的包有新版本,就可以使用 npm update <package-name> 更新它,或者直接 npm update 更新所有:

一开始,我们package.json里面定义的lodash的版本是3.10.1,

当我们用npm outdated,能看到最新版本是4.17.10

要更新到最新版本,我们需要把package.json改为*,然后执行npm update

只有当前模块版本低于远程,package.json 中的版本语义规则满足情况,才能更新成功。

npm uninstall <package-name> : 卸载本地 package

同时node_modules/lodash文件夹,以及package.json里面的"lodash": ....也一并删除了

全局安装 package

如果你想要直接在命令行中使用某个包,比如 jshint ,你可以全局安装它。

全局安装比本地安装多了个 -g:

npm install -g <package-name>

以 jshint 为例,全局安装命令是:

 

npm install -g jshint

安装后可以使用 npm ls -g --depth=0 查看安装在全局第一层的包。

3.使用其他包管理器帮你解决这个问题

卸载 node,然后使用 Homebrew 重装 node: 

brew install node

Homebrew 会帮我们处理好权限的问题。

npm outdated -g --depth=0:查看需要更新的包

npm update -g <package>:更新指定的包:

npm update -g:要更新所有全局包

官方说在 2.6.1 以下的 npm ,直接使用 npm update -g 并不安全,因为它会递归地更新所有全局依赖。

npm check:检查当前版本与最新版本的比照图

npm uninstall -g <package>:卸载全局 package

npm run:直接运行 package.json 中 scripts 指定的脚本:

{
  "name": "demo",
  "scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
}

npm run 是 npm run-script 的缩写,命令行输入 npm run lint 或者 npm run-script lint 就会执行 jshint **.js 。

npm run 会创建一个Shell,执行指定的命令,并临时将node_modules/.bin加入PATH 变量,这意味着本地模块可以直接运行。

package.json 中的 scripts 执行的脚本是本地项目内 node_modules -> .bin 内的脚本。
直接运行 npm run 会列出当前项目的 package.json 中 scripts 属性下的所有脚本命令。

npm install 也可以直接从 github 下载:
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0

npm info <package-name> 可以查看指定包的信息:
npm adduser 用于在npmjs.com注册一个用户:
npm home <package-name>命令可以打开指定模块的主页; 
npm repo <package-name>命令则是打开指定模块的代码仓库。
npm prune “修剪”,npm prune 可以检查出当前项目的 node_modules目录中,没有在 package.json里提到的模块。

 

npm warn old lockfile npm warn old lockfile The package-lock.json file was created with an old version of npm, npm warn old lockfile so supplemental metadata must be fetched from the registry. npm warn old lockfile npm warn old lockfile This is a one-time fix-up, please be patient... npm warn old lockfile npm warn deprecated osenv@0.1.5: This package is no longer supported. npm warn deprecated npmlog@4.1.2: This package is no longer supported. npm warn deprecated are-we-there-yet@1.1.7: This package is no longer supported. npm warn deprecated gauge@2.7.4: This package is no longer supported. npm warn deprecated fstream@1.0.12: This package is no longer supported. npm warn deprecated axios@0.19.2: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 npm warn deprecated svgo@1.2.2: This SVGO version is no longer supported. Upgrade to v2.x.x. npm warn deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap. npm warn deprecated vue@2.6.14: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. npm warn deprecated node-sass@4.14.1: Node Sass is no longer supported. Please use `sass` or `sass-embedded` instead. npm warn deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. ⠸ PS G:\ChildrenBooks\springboot6kt9q920\src\main\resources\admin\admin> * 还原的历史记录 npm error path G:\ChildrenBooks\springboot6kt9q920\src\main\resources\package.json npm error errno -4058 npm error enoent Could not read package.json: Error: ENOENT: no such file or directory, open 'G:\ChildrenBooks\
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值