package.json简介javascript
package.json在Node项目中用于描述项目的一些基本信息,以及依赖的配置,通常每个Node项目的根目录下都有一个package.json文件。html
在项目的根目录中咱们能够经过npm init来初始化一个package.json文件,其内容是一个Json对象,基本结构以下:java
{ "name": "package", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
package.json文件中包含了不少的属性,这些属性都是项目的一些基本信息以及一些配置信息,这里是一些更详细的信息,着重介绍一些咱们常常用到的属性。node
name main属性react
name和version属性是package.json文件两个不可或缺的属性,一般name属性和咱们项目的文件名称是同样的,version表示这个项目的版本号。jquery
main属性指定了加载时的入口文件,当使用require()语法来加载一个模块时,就会查看package.json文件的main属性,main属性的属性值就是要加载的模块。npm
在桌面新建一个文件夹(模块)命名为factory,在该文件夹内新建一个index.js文件,在index.js文件中写入如下代码:json
function create(){ var product = "我是一个产品"; return product; } exports.create = create;
而后在桌面上新建一个store文件夹,在该文件夹内新建一个store.js文件,在store.js文件中写入如下代码:函数
var factory = require("../factory"); var product = factory.create(); console.log(product);
在命令行中进入store文件夹输入node store.js,能够发现运行成功,在store.js中经过require()函数加载factory模块时若是没有package.json文件,默认就会加载模块中的index.js文件。若是存在package.json文件这样在require()加载一个模块时,就会读取package.json文件的main属性,main属性指定的入口文件就是require()要加载的文件:ui
如今经过命令行进入factory文件经过npm init命令初始化一个package.json文件,将package.json文件的main属性改成demo.js,而后在将factory文件内的index.js文件更名为demo.js,而后在命令行中进入store文件在执行node store.js,仍然是能够成功运行的。
scripts属性
scripts属性能够指定npm命令缩写。在store文件夹中初始化package.json文件,而后添加scripts属性:
执行npm run start仍然能够运行成功,经过scripts属性npm run start等价于node store.js。
关于scripts的更具体的使用请看这里。
dependencies devDependencies属性
当咱们在命令行中执行npm install jquery -save时会在当前目录下新建一个node_modules文件夹,将jquery下载到node_modules文件内,并将该模块的依赖写入到dependencies内。若是执行npm install react -save-dev时会将react下载到node_modules文件下并将依赖写入到devDependencies内。
"dependencies": { "jquery": "^3.1.1" }, "devDependencies": { "react": "^15.3.2" }
若是在写入依赖以后咱们删除node_module文件,而后执行npm install就会读取package.json文件的dependencies和devDependencies属性自动下载写入的依赖模块。