一、初步理解
- npm 安装 package.json 时 直接转到当前项目目录下用命令 npm install 或 npm install –save-dev 安装即可,自动将 package.json 中的模块安装到 node-modules 文件夹下
- package.json 中添加中文注释会编译出错
- 每个项目的根目录下面,一般都有一个 package.json 文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
`
- package.json 文件可以手工编写,也可以使用 npm init 命令自动生成。
注意:npm init 时,用户需回答一些问题,然后在当前目录生成一个基本的 package.json 文件。所有问题之中,只有项目名称(name)和项目版本(version)是必填的,其他都是选填的。
二、进一步理解
完整字段及说明地址
以下是根据 创建 vue 项目的时候 npm init 自动生成的 package.json 做详细的理解
1. 下面是最简单的的一个 package.json 文件(只有两个数据,项目名称和项目版本,他们都是必须的,如果没有就无法 install)
{
"name": "kocla_test",
"version":"1.0.0",
}
2.scripts
指定了运行脚本命令的 npm 命令行缩写,比如 start 指定了运行 npm run start 时,所要执行的命令。
下面的设置指定了 npm run dev、npm run bulid、npm run unit、npm run test_、npm run lint_时,所要执行的命令。
"scripts": {
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
"test": "npm run unit",
"lint": "eslint --ext .js,.vue src test/unit/specs"
},
3.dependencies,devDependencies
dependencies 和 devDependencies 两项,分别指定了项目运行所依赖的模块、项目开发所需要的模块。它们都指向一个对象,该对象的各个成员,分别由模块名和对应的版本要去组成,表示依赖的模块及其版本范围
–save 参数表示将该模块写入 dependencies 属性,
–save-dev 表示将该模块写入 devDependencies 属性。
"dependencies": {
"vue": "^2.2.2",
"vue-router": "^2.2.0"
},
"devDependencies": {
"autoprefixer": "^6.7.2",
"babel-core": "^6.22.1",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.10",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-env": "^1.2.1",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^1.1.3",
}
4.config 字段
config 字段用于向环境变量输出值。
{
"name" : "foo",
"config" : {"port" : "8080"},
"scripts" : {"start" : "node server.js"}
}
5.engines 字段
指明了该项目所需要的 node.js 版本
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
6.bin
许多包有一个或多个可执行文件希望被安装到系统路径。在 npm 下要这么做非常容易(事实上,npm 就是这么运行的)。
这需要在你的 package.json 中提供一个 bin 字段,它是一个命令名和本地文件名的映射。在安装时,如果是全局安装,npm 将会使用符号链接把这些文件链接到 prefix/bin,如果是本地安装,会链接到./node_modules/.bin/。
比如,要使用 myapp 作为命令时可以这么做:
{"bin" : { "myapp" : "./cli.js"} }
这么一来,当你安装 myapp,npm 会从 cli.js 文件创建一个到 /usr/local/bin/myapp 的符号链接(这使你可以直接在命令行执行 myapp)。