npm如何更新VUE package.json文件中依賴的包版本
npm更新VUE package.json文件中依賴的包版本
1.安裝npm install -g npm-check-updates
可能會(huì)出現(xiàn)以下錯(cuò)誤:
npm ERR! syscall mkdir
npm ERR! path D:\node\node_global\node_modules\npm-check-updates
npm ERR! errno -4048
npm ERR! Error: EPERM: operation not permitted, mkdir 'D:\node\node_global\node_modules\npm-check-updates'
npm ERR! [Error: EPERM: operation not permitted, mkdir 'D:\node\node_global\node_modules\npm-check-updates'] {
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! syscall: 'mkdir',
npm ERR! path: 'D:\\node\\node_global\\node_modules\\npm-check-updates'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! D:\node\node_cache\_logs\2022-03-07T06_46_10_432Z-debug-0.log
以上錯(cuò)誤的原因:
沒有權(quán)限創(chuàng)建文件夾
解決方案:使用CMD命令,用管理員打開,在該目錄下執(zhí)行該命令
2.執(zhí)行下面命令
(顯示當(dāng)前目錄下項(xiàng)目中所有新的依賴包)
ncu
3. 更新項(xiàng)目package文件
ncu -u
或者
npx npm-check-updates@next --upgrade
以上操作完畢之后,查看 package.json 文件,可以看到依賴包已經(jīng)更新
package.json文件解釋說明
什么是package.json文件?
什么是Node.js的模塊(Module)?在Node.js中,模塊是一個(gè)庫(kù)或框架,也是一個(gè)Node.js項(xiàng)目。
Node.js項(xiàng)目遵循模塊化的架構(gòu),當(dāng)我們創(chuàng)建了一個(gè)Node.js項(xiàng)目,意味著創(chuàng)建了一個(gè)模塊,這個(gè)模塊的描述文件,被稱為package.json。
通常情況下package.json內(nèi)容出錯(cuò),會(huì)導(dǎo)致項(xiàng)目出現(xiàn)bug,甚至阻止項(xiàng)目的運(yùn)行。
下面是normalize包的package.json文件:
{ ? "name": "medpro", ? "version": "1.0.0", ? "description": "A Vue.js project", ? "author": "", ? "private": true, ? "scripts": { ? ? "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", ? ? "start": "npm run dev", ? ? "build": "node build/build.js" ? }, ? "dependencies": { ? ? "axios": "^0.27.2", ? ? "element-ui": "^2.15.9", ? ? "qs": "^6.11.0", ? ? "vue": "^2.5.2", ? ? "vue-axios": "^3.4.1", ? ? "vue-router": "^3.0.1", ? ? "vuex": "^3.4.0", ? ? "vuex-along": "^1.2.13" ? }, ? "devDependencies": { ? ? "autoprefixer": "^7.1.2", ? ? "babel-core": "^6.22.1", ? ? "babel-helper-vue-jsx-merge-props": "^2.0.3", ? ? "babel-loader": "^7.1.1", ? ? "babel-plugin-syntax-jsx": "^6.18.0", ? ? "babel-plugin-transform-runtime": "^6.22.0", ? ? "babel-plugin-transform-vue-jsx": "^3.5.0", ? ? "babel-preset-env": "^1.3.2", ? ? "babel-preset-stage-2": "^6.22.0", ? ? "chalk": "^2.0.1", ? ? "copy-webpack-plugin": "^4.0.1", ? ? "css-loader": "^0.28.0", ? ? "extract-text-webpack-plugin": "^3.0.0", ? ? "file-loader": "^1.1.4", ? ? "friendly-errors-webpack-plugin": "^1.6.1", ? ? "html-webpack-plugin": "^2.30.1", ? ? "mockjs": "^1.1.0", ? ? "node-notifier": "^5.1.2", ? ? "optimize-css-assets-webpack-plugin": "^3.2.0", ? ? "ora": "^1.2.0", ? ? "portfinder": "^1.0.13", ? ? "postcss-import": "^11.0.0", ? ? "postcss-loader": "^2.0.8", ? ? "postcss-url": "^7.2.1", ? ? "rimraf": "^2.6.0", ? ? "semver": "^5.3.0", ? ? "shelljs": "^0.7.6", ? ? "uglifyjs-webpack-plugin": "^1.1.1", ? ? "url-loader": "^0.5.8", ? ? "vue-loader": "^13.3.0", ? ? "vue-style-loader": "^3.0.1", ? ? "vue-template-compiler": "^2.5.2", ? ? "webpack": "^3.6.0", ? ? "webpack-bundle-analyzer": "^2.9.0", ? ? "webpack-dev-server": "^2.9.1", ? ? "webpack-merge": "^4.1.0" ? }, ? "engines": { ? ? "node": ">= 6.0.0", ? ? "npm": ">= 3.0.0" ? }, ? "browserslist": [ ? ? "> 1%", ? ? "last 2 versions", ? ? "not ie <= 8" ? ] }
package.json文件屬性說明
name | 包名. |
version | 包的版本號(hào) |
description | 包的描述 |
homepage | 包的官網(wǎng)URL |
author | 包的官網(wǎng)URL |
contributors | 包的其他貢獻(xiàn)者 |
dependencies / devDependencies | 生產(chǎn)/開發(fā)環(huán)境依賴包列表。它們將會(huì)被安裝在 node_module 目錄下 |
repository | 包代碼的Repo信息,包括type和URL,type可以是git或svn,URL則是包的Repo地址 |
main | main 字段指定了程序的主入口文件,require('moduleName') 就會(huì)加載這個(gè)文件。這個(gè)字段的默認(rèn)值是模塊根目錄下面的 index.js |
keywords | 關(guān)鍵字 |
上述參數(shù)是極為常見的參數(shù),另外還可以設(shè)置script
、license
等等。
除了官方必須的一些參數(shù)外,我們也可以存儲(chǔ)我們自己的關(guān)于模塊的描述信息在package.json
生成package.json文件
我們可以使用NPM生成package.json文件,它可以包含最基本的設(shè)置以及結(jié)果
$ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install <pkg> --save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (node_modules) lsm # 模塊名 version: (1.0.0) description: Node.js 測(cè)試 # 描述 entry point: (index.js) test command: git repository: # Github 地址 keywords: author: license: (ISC) About to write to ……/node_modules/package.json: # 生成地址 { "name": "lsm", "version": "1.0.0", "description": "Node.js 測(cè)試", …… } Is this ok? (yes) y
這樣就生成了一個(gè)最基本的package.json文件,注意手動(dòng)更改的時(shí)候要完全遵循嚴(yán)格的JSON書寫格式,否則容易出現(xiàn)意想不到的簡(jiǎn)單錯(cuò)誤。
版本號(hào)概述
npm模塊的完整的版本號(hào)一般是【主版本 . 次要版本 . 補(bǔ)丁版本】,一般情況下,次要版本號(hào)發(fā)生改變的話,表示程序有重大更新。
(1)使用~表示版本范圍
這里大概可以如此概述:
- ① 補(bǔ)丁版本號(hào)缺失,則允許補(bǔ)丁版本號(hào)升級(jí);
- ② 次要版本號(hào)+補(bǔ)丁版本號(hào)缺失,則允許次要版本號(hào)+補(bǔ)丁版本號(hào)升級(jí)。
標(biāo)識(shí)示例 | 描述 | 版本范圍 | 說明 |
---|---|---|---|
~2.3.4 | 主版本+次要版本+補(bǔ)丁版本 | 2.3.4 <= version < 2.4.0 | 在主版本+次要版本不允許變更的前提下,允許補(bǔ)丁版本升級(jí)(補(bǔ)丁板板號(hào)下限是4,無(wú)上限)。 |
~2.3 | 主版本+次要版本 | 2.3.0 <= version < 2.4.0 | 在主版本+次要版本不允許變更的前提下,允許補(bǔ)丁版本升級(jí)。 |
~2 | 主版本 | 2.0.0 <= version < 3.0.0 | 在主版本不允許變更的前提下,允許次要版本+補(bǔ)丁版本升級(jí)。 |
(2)使用^表示版本范圍
這里大概可以如此概述:
- ① 若主版本號(hào)不為0,則允許次要版本號(hào)+補(bǔ)丁版本號(hào)升級(jí);
- ② 若主版本號(hào)為0,次要版本號(hào)不為0,則允許補(bǔ)丁版本號(hào)升級(jí);
- ③ 若主版本號(hào)+次要版本號(hào)皆為0,將無(wú)法升級(jí)模塊;
- ④ 若主版本不為0,補(bǔ)丁版本缺失(將被視作0),那么將允許次要版本+補(bǔ)丁版本升級(jí)到到最新;
- ⑤ 若主版本為0,補(bǔ)丁版本缺失(將被視作0),那么允許補(bǔ)丁版本升級(jí)到最新;
- ⑥ 若次要版本+補(bǔ)丁版本均缺失,此時(shí)補(bǔ)丁版本,被視作1,那么將允許次要版本+補(bǔ)丁版本升級(jí)到最新。
標(biāo)識(shí)示例 | 描述 | 版本范圍 | 說明 |
---|---|---|---|
^1.3.4 | 主版本號(hào)不為0 | 1.3.4 <= version < 2.0.0 | 主版本不為0,允許次要版本+補(bǔ)丁版本升級(jí)(此例下限是1.3.4,上線是2.0.0但不匹配2.0.0) |
^0.2.3 | 主版本號(hào)為0,次要版本號(hào)不為0 | 0.2.3 <= version < 0.3.0 | 主版本為0,次要版本不為0,允許補(bǔ)丁版本升級(jí)(此例下限是0.2.3,上限是0.3.0但不匹配0.3.0) |
^0.0.3 | 主版本號(hào)+次要版本號(hào)均為0 | 0.0.3 <= version < 0.0.4 | 主版本號(hào)+次要版本號(hào)均為0,無(wú)法升級(jí)模塊 |
^1.3 | 主版本不為0,補(bǔ)丁版本缺失 | 1.3.0 <= version < 2.0.0 | 主版本不為0,補(bǔ)丁版本因缺失被視作0,允許次要版本+補(bǔ)丁版本升級(jí)到到最新(此例下限是1.3.0,上線是2.0.0但不匹配2.0.0) |
^0.2 | 主版本為0,補(bǔ)丁版本缺失 | 0.2.0 <= version < 0.3.0 | 主版本為0,補(bǔ)丁版本因缺失被視作0,允許補(bǔ)丁版本升級(jí)到最新(此例下限是0.2.0,上限是0.3.0但不匹配0.3.0) |
^1 | 主版本號(hào)不為0,次要版本+補(bǔ)丁版本均缺失 | 1.0.0 <= version < 2.0.0 | 主版本不為0,次要版本+補(bǔ)丁版本因缺失被視作0,允許次要版本+補(bǔ)丁版本升級(jí)(此例下限是1.0.0,上線是2.0.0但不匹配2.0.0) |
^0 | 主版本號(hào)為0,次要版本+補(bǔ)丁版本均缺失 | 0.0.1 <= version < 1.0.0 | 主版本為0,次要版本因缺失被視作0,補(bǔ)丁版本雖缺失但只能被視作1,允許缺失的次要版本+補(bǔ)丁版本升級(jí)到最新(此例下限是0.0.1,上限是1.0.0但不匹配1.0.0) |
(3)語(yǔ)義版本號(hào)
使用NPM下載和發(fā)布代碼時(shí)都會(huì)接觸到版本號(hào)。NPM使用語(yǔ)義版本號(hào)來(lái)管理代碼,這里簡(jiǎn)單介紹一下。
語(yǔ)義版本號(hào)分為X.Y.Z三位,分別代表主版本號(hào)、次版本號(hào)和補(bǔ)丁版本號(hào)。當(dāng)代碼變更時(shí),版本號(hào)按以下原則更新。
- 如果只是修復(fù)bug,需要更新Z位。
- 如果是新增了功能,但是向下兼容,需要更新Y位。
- 如果有大變動(dòng),向下不兼容,需要更新X位。
版本號(hào)有了這個(gè)保證后,在申明第三方包依賴時(shí),除了可依賴于一個(gè)固定版本號(hào)外,還可依賴于某個(gè)范圍的版本號(hào)。例如"argv": "0.0.x"表示依賴于0.0.x系列的最新版argv。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3捕獲和處理不同層級(jí)的異常/錯(cuò)誤的有效方法
項(xiàng)目中如果沒有對(duì)異常做處理,可能導(dǎo)致應(yīng)用崩潰或顯示報(bào)錯(cuò)信息影響用戶體驗(yàn),因此需要對(duì)不同層級(jí)的錯(cuò)誤進(jìn)行捕獲,所以本文給大家介紹了Vue3捕獲和處理不同層級(jí)的異常/錯(cuò)誤的有效方法,需要的朋友可以參考下2025-01-01Vue keepAlive頁(yè)面強(qiáng)制刷新方式
這篇文章主要介紹了Vue keepAlive頁(yè)面強(qiáng)制刷新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05vue項(xiàng)目中導(dǎo)入swiper插件的方法
這篇文章主要介紹了vue項(xiàng)目中導(dǎo)入swiper插件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-01-01vue跳轉(zhuǎn)同一路由報(bào)錯(cuò)的問題及解決
這篇文章主要介紹了vue跳轉(zhuǎn)同一路由報(bào)錯(cuò)的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04vue實(shí)現(xiàn)點(diǎn)擊出現(xiàn)操作彈出框的示例
這篇文章主要介紹了vue實(shí)現(xiàn)點(diǎn)擊出現(xiàn)操作彈出框的示例,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-11-11vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】
本文是小編給大家收藏整理的關(guān)于vue項(xiàng)目前端知識(shí)點(diǎn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Vue移動(dòng)端實(shí)現(xiàn)pdf/excel/圖片在線預(yù)覽
這篇文章主要為大家詳細(xì)介紹了Vue移動(dòng)端實(shí)現(xiàn)pdf/excel/圖片在線預(yù)覽功能的相關(guān)方法,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2024-04-04Vue項(xiàng)目啟動(dòng)后如何在瀏覽器自動(dòng)打開
這篇文章主要介紹了Vue項(xiàng)目啟動(dòng)后如何在瀏覽器自動(dòng)打開問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08