目录
package.json是什么
什么是Node.js的模块?在Node.js中,模块是一个库或框架,也是一个Node.js项目
Node.js醒目遵循模块化的架构,当我们创建了一个Node.js项目,意味着创建了一个模块,这个模块的描述文件就是package.json
package.json定义了项目所需要的各种模块,以及项目的配置信息(名称、版本、许可证等)
npm install命令也是根据这个配置文件自动下载项目所需的模块。
{
"name": "risk-management",
"version": "1.0.0",
"description": "riMskManagement",
"author": "OnlyloveaCat",
"license": "MIT",
"scripts": {
"lint": "vue-cli-service lint",
"dev": "vue-cli-service serve --open",
"staging": "vue-cli-service build --mode staging",
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "0.18.1",
"clipboard": "^2.0.4",
"crypto-js": "^3.1.9-1",
"echarts": "^4.6.0",
"element-ui": "^2.12.0",
"file-saver": "^2.0.2",
"jszip": "^3.2.2",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"vue": "2.6.10",
"vue-count-to": "^1.0.13",
"vue-router": "3.0.2",
"vue-tinymce-editor": "^1.6.2",
"vuex": "3.1.0",
"xlsx": "^0.15.4"
},
"devDependencies": {
"@babel/core": "7.0.0",
"@babel/register": "7.0.0",
"@vue/cli-plugin-babel": "3.5.3",
"@vue/cli-plugin-unit-jest": "3.5.3",
"@vue/cli-service": "3.5.3",
"@vue/test-utils": "1.0.0-beta.29",
"autoprefixer": "^9.5.1",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "23.6.0",
"babel-plugin-component": "^1.1.1",
"chalk": "2.4.2",
"chokidar": "2.1.5",
"compression-webpack-plugin": "^3.0.0",
"connect": "3.6.6",
"html-webpack-plugin": "3.2.0",
"node-sass": "^4.9.0",
"plop": "2.3.0",
"runjs": "^4.3.2",
"sass-loader": "^7.1.0",
"script-ext-html-webpack-plugin": "2.1.3",
"script-loader": "0.7.2",
"serve-static": "^1.13.2",
"svg-sprite-loader": "4.1.3",
"svgo": "1.2.0",
"vue-template-compiler": "2.6.10",
"webpack-bundle-analyzer": "^3.6.0"
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}
package.json中的各个字段含义
name:包名
version:包的版本号
description:包的描述
homepage:包的官网url
author:包的作者
contributors:包的其他贡献者
scripts:指定了运行脚本命令的NPM命令行缩写,如start指定了运行npm run start时所要执行的命令
关于这里命令的解释,可以参考:https://cli.vuejs.org/zh/guide/mode-and-env.html#%E6%A8%A1%E5%BC%8F
dependencies/devDependencies:生产/开发环境依赖包列表,他们将会被安装在node_module目录下,对象中包含模块名和模块的版本要求
peerDependencies:用来供插件指定其所需要的主工具的版本(应用场景:项目和依赖的模块同时依赖另一个模块,但是依赖的版本不同。如:项目依赖B模块的1.0版本,A模块依赖B模块的2.0版本,A模块是B模块的插件,用户安装的B模块是1.0版本,这时使用时就会出问题,需要一种机制,在安装的时候A B 一起安装,指定B的版本)
bin:用来指定各个内部命令对应的可执行文件的位置
repository:包代码的Repo信息,包括type和url,type可以是git或svn,url则是包的Repo地址
main:指定了程序的主入口文件,require('moduleName')就会加载这个文件,默认值是该模块根目录下的index.js
config:用于添加命令行的环境变量(如:{port:8080})
keywords:关键字
browser:指定该模板供浏览器使用的版本
engines:指明了该模块运行的平台,比如node的某个版本或者浏览器,也可以指定适用的npm版本
man:指定当前模块的man文档的位置
preferGlobal:值为布尔值,表示当用户不将该模块安装为全局模块时(即不用Global参数),要不要现实警告
style:指定供浏览器使用时,样式文件所在的位置。样式文件打包工具parcelify,通过它知道样式文件的打包位置
如何生成package.json文件
我们可以使用NPM生成package.json文件,它包含最基本的设置以及结果 命令:npm init,问答式会要求用户回答一些问题
如果某个模块不在package.json文件中,也可以单独安装,并将其写入package.json文件中
$ npm install express --save
$ npm install express --save-dev
--save 参数表示将该模块写入dependencies属性
--save-dev 参数表示将该模块写入devDenpendencies属性