package.json是一个项目描述文件, 是一个严格的json文件,里面记录了当前项目的信息。比如: 项目名称、版本、作者、gitHub地址、当前项目依赖哪些第三方模块等。
// 项目名称
"name": "vue-admin-template",
// 项目版本
"version": "4.4.0",
// 项目描述,description是一个字符串。它可以帮助人们在使用npm search时找到这个包
"description": "A vue admin template with Element UI & axios & iconfont & permission control & lint",
// 作者信息
"author": "Lu " ,
// 项目的主入口文件,在模块化项目中都会有一个主模块,main 里面填写的就是主模块的入口文件
"main": "index.js",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
"lint": "eslint --ext .js,.vue src",
"test:unit": "jest --clearCache && vue-cli-service test:unit",
"test:ci": "npm run lint && npm run test:unit"
},
scripts属性是一个对象,里边指定了项目的生命周期个各个环节需要执行的命令。key是生命周期中事件,value是要执行的命令。具体的内容有 install start stop 等。更多详细 请点我访问
// 开发 依赖所需要的第三方模块(包)
"dependencies": {
"axios": "^0.27.2",
"core-js": "3.6.5",
"element-ui": "^2.15.9",
"js-cookie": "2.2.0",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
"qs": "^6.10.1",
"vue": "2.6.10",
"vue-router": "3.0.6",
"vuedraggable": "^2.23.2",
"vuex": "3.1.0"
},
dependencies属性是一个对象,配置模块依赖的模块列表,key是模块名称,value是版本范围,版本范围是一个字符,可以被一个或多个空格分割。dependencies也可以被指定为一个git地址或者一个压缩包地址。不要把测试工具或transpilers写到dependencies中。下面是一些写法,详见请点我访问
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
你可以指定项目运行的node版本范围,如下: { “engines” : { “node” : “>=0.10.3 <0.12” } }
和dependencies一样,如果你不指定版本范围或者指定为*,任何版本的node都可以。
也可以指定一些npm版本可以正确的安装你的模块,例如: { “engines” : { “npm” : “~1.0.20” } }
要注意的是,除非你设置了engine-strict属性,engines属性是仅供参考的。
"devDependencies": {
"coffee-script": "~1.6.3"
...
},
如果有人想要下载并使用你的模块,也许他们并不希望或需要下载一些你在开发过程中使用的额外的测试或者文档框架。
在这种情况下,最好的方法是把这些依赖添加到devDependencies属性的对象中。 这些模块会在npm link或者npm install的时候被安装,也可以像其他npm配置一样被管理,详见npm的config文档。对于一些跨平台的构建任务,例如把CoffeeScript编译成JavaScript,就可以通过在package.json的script属性里边配置prepublish脚本来完成这个任务,然后需要依赖的coffee-script模块就写在devDependencies属性中
version 精确匹配版本
version 必须大于某个版本
=version 大于等于
<=versionversion 小于
~version “约等于”,具体规则详见semver文档
^version "兼容版本"具体规则详见semver文档
1.2.x 仅一点二点几的版本