1.package.json 是什么
-
package.json 文件其实就是对项目或者模块包的描述,里面包含许多元信息。比如项目名称,项目版本,项目执行入口文件,项目贡献者等等。该文件可以手动创建,也可以npm init,或者通过三方脚手架 vue-cli (vue create myapp)/cra(npx create-react-app my-app)
-
{ "name": "webappdemo", "version": "0.1.0", "private": true, "scripts": { "start": "vue-cli-service serve --mode dev", "test:unit": "vue-cli-service test:unit", "lint": "vue-cli-service lint", "dev": "vue-cli-service serve" }, "dependencies": { "vant": "^2.8.4", "vue": "^2.6.11", "vue-class-component": "^7.2.3", "vue-clipboard2": "^0.3.1", "vue-property-decorator": "^8.4.2", "vue-router": "^3.2.0", "vuex": "^3.4.0", "vuex-class": "^0.3.2" }, "devDependencies": { "axios": "^0.19.2", "node-sass": "^4.12.0", "sass-loader": "^8.0.2", "ts-import-plugin": "^1.6.6", "typescript": "~3.9.3", "vue-template-compiler": "^2.6.11" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/essential", "@vue/standard", "@vue/typescript/recommended" ], "parserOptions": { "ecmaVersion": 2020 }, "rules": { "indent": "off" }, "overrides": [ { "files": [ "**/__tests__/*.{j,t}s?(x)", "**/tests/unit/**/*.spec.{j,t}s?(x)" ], "env": { "jest": true } } ] }, "browserslist": [ "> 1%", "last 2 versions", "not dead" ], "jest": { "preset": "@vue/cli-plugin-unit-jest/presets/typescript-and-babel" } } -
Npm install 会安装当前项目下的所有依赖,
2.package-lock.json 是什么
-
项目npm install 时会生成lock文件
-
"axios": { "version": "0.19.2", "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz?cache=0&sync_timestamp=1597979791211&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.19.2.tgz", "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", "requires": { "follow-redirects": "1.5.10" } }, -
记录了在任意时刻安装的确切依赖 包含版本号 下载地址 时间戳等
3.要不要加在项目仓库里(要)
-
仅靠package.json安装依赖版本无法控制,不能保证(不同设备,不同npm版本,不同源,不同时间)安装的依赖相同。原因是package.json里面指定的版本号会自动升级
"react-redux": "~7.2.0", // 补丁版本都可接受 7.2.0-7.2.9 "redux": ">=4.0.4", // 大于某个版本 "redux-thunk": "^2.3.0",//小版本都可接受 >=2.3.0 <3.0.0 "teaset": "*", // *,表示>=0.0.0的任意版本 "axios": "1.1.1" //必须依赖1.1.1版本 -
使用lock时可以保证所有的同事(npm版本>5.9,源一致)版本号一致
4.lock文件怎么处理
- 不要手动修改,使用npm install axios 去生成
- 有冲突时不要修改 删除后重新npm i 生成
- 不要手动在package.json添加/删除依赖,使用npm install/uninstall
- 如果不是添加新的依赖,只是单纯的下载依赖请使用npm ci 不会修改package-lock
5. Npm 常用指令
npm -v
sudo npm install -g npm // window系统不需要sudo
npm init 初始化项目生成package.json
npm install axios -S / --save
npm install axios -D
npm config set registry https://registry.npm.taobao.org 更改 npm 的下载镜像为淘宝镜像
npm uninstall axios // 删除axios 但是不删除package.json中的信息
npm uninstall axios --save // 删除package.json中 dependencies的信息
npm uninstall axios --save-dev // 删除package.json中 devDependencies的信息