【HZHV】从0到1阅读[email protected]源码——package.json文件
[email protected]
package.json源码
{ name: vue, version: 0.6.0, author: { name: Evan You, email: [email protected], url: http://evanyou.me }, license: MIT, description: A mini front-end MVVM framework, keywords: [ mvvm, browser, framework ], main: src/main.js, repository: { type: git, url: https://github.com/yyx990803/vue.git }, scripts: { test: grunt test }, devDependencies: { grunt: ~0.4.2, grunt-contrib-watch: ~0.5.3, grunt-component-build: ~0.4.1, grunt-contrib-jshint: ~0.7.1, grunt-contrib-uglify: ~0.2.7, grunt-mocha: ~0.4.6, jscoverage: ~0.3.8, jshint-stylish: 0.1.3, semver: ~2.2.1 }, __npminstall_done: true, _from: [email protected], _resolved: https://registry.npmmirror.com/vue/-/vue-0.6.0.tgz } 介绍
package.json 是npm init命令初始化后,在项目的根目录下自动生成的配置文件,它定义了这个项目的配置信息(比如名称、版本、许可证等元数据)以及所需要的各种模块。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
字段含义
1.name
package的名称。不过需要注意的是,name有长度限制(虽然一般都不会超),而且name不能以 【点】 或者 【下划线】开头,name中不能有大写字母。这个是每一个package必须的。在业务代码中,通过require(${name})就可以引入对应的程序包了。
2.version
package的版本。对于业务项目来说,这个往往不太重要,但是如果你要发布自己的项目,这个就显得十分重要了。name和version共同决定了唯一一份代码。npm是用[npm-semver来解析版本号的。我们一般见到的都是大版本.次要版本.小版本这种版本号,比如16.1.0。
3.description
包的描述。开发组件库时必需,简明的向库的使用者介绍这个库是干嘛的。对于公司的业务项目,这个配置项一般无所谓。
4.author
项目的作者。可以为字符串,对象。
5.license
开源协议。对于开源组件库,这个十分重要。
6.repository
对于组件库很有用。让组件库使用者找到你的代码库地址。这个配置项会直接在组件库的npm首页生效
7.keywords
关键词。一个字符串数组,对这个npm包的介绍。组件库必需,便于使用者在npm中搜索。对于公司业务项目,这个配置一般无所谓。
8.files
数组。表示代码包下载安装完成时包括的所有文件。
9.main
代码入口。这个十分重要,特别是对于组件库。当你想在node_modules中修改你使用的某个组件库的代码时,首先在node_modules中找到这个组件库,第一眼就是要看这个main,找到组件库的入口文件。在这个入口文件中再去修改代码吧。
browser 环境和 node 环境均可使用。
模块引入方法require()在引入包时,会优先检查这个字段,并将其作为包中其余模块的入口。如果不存在这个字段,require()方法会查找包目录下的 index.js , index.node , index.json 文件作为默认入口。
10.scripts
指定了运行脚本命令的npm命令行缩写。十分重要。
脚本说明对象。它主要被包管理器用来安装,编译,测试和卸载包。
在命令行输入:npm run dev , 对应的命令就会被执行。这里有一个地方需要注意,当执行npm run xxx 的时候,node_modules/.bin/目录会在运行时被加入系统的PATH变量。
上面的例子,当我们在命令行输入:npm run build时,其实真正执行的命令是node_modules/.bin/webpack而不是webpack。所以,当你的webpack并未全局安装时,直接在命令行输入:webpack是会报错的。因为你的webapck是安装在node_modules/.bin/下面的。
11.devDependencies
项目的依赖。通过npm run install --save-dev安装的包会出现在这里。主要是在开发过程中依赖的一些工具。用法与dependencies相似
12.browser
定义 npm 包在 browser 环境下的入口文件。