package.json
每一个node模块包都有一个package.json,而我们在node环境下开发项目,整个项目对于node而已,也是一个包,所以也需要在我们的项目根目录下放一个package.json文件。
这篇文章,主要是来讲解package.json的结构、主要字段和于gulp相关的地方。
我们看一个package.json文件的内容,它总是会包含这么一些内容:
{
"name": "steerjs",
"version": "1.0.0",
"description": "a tool package to build your component more quickly",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/tangshuang/steerjs.git"
},
"keywords": [
"javascript",
"component"
],
"author": "frustigor",
"license": "ISC",
"bugs": {
"url": "https://github.com/tangshuang/steerjs/issues"
},
"homepage": "https://github.com/tangshuang/steerjs#readme",
"devDependencies": {
"babel-core": "^6.18.2",
"babel-preset-latest": "^6.16.0",
"babel-register": "^6.18.0",
"gulp": "^3.9.1"
}
}
name 包的名称
version 包的版本
description 包描述
main 入口文件,当require这个包名的时候,这个文件会被require进去。
repository 仓库信息
keywords 描述信息
author 作者信息
license 授权信息
bugs 如果其他人发现了bugs,应该怎么办
homepage 包的主页地址
scripts 基于npm的脚本,例如上面这个,可以在命令行里,在这个包里面运行npm run test,就会显示一行字
dependencies 包依赖
devDependencies 包的开发依赖
script是比较高端的应用,现在已经有人在提倡使用npm script代替gulp,但是毕竟每个东西存在意义不一样。这里不深究,有兴趣自己去学习。
dependencies和devDependencies有什么区别?前者是上线以后的产品也需要依赖,比如你发布了一个包,别人在npm install你的包的时候,dependencies里面的包也必须被安装才可以。devDependencies里面的包则不需要在使用这个包的时候安装。但是如果你是开发这个包的人,会把开发的时候需要用到的模块放在devDependencies里面,这样你在开发的时候执行npm install
,所有的包都会安装好。
这个可能一时好理解,我就举个例子:假如你是开发一个jquery插件,你开发的时候肯定需要像gulp、scss之类的辅助工具进行打包压缩,你把gulp和scss相关的包放在devDependencies里,然后npm install
,然后就可以使用scss编译你写的scss文件。开发完了,你打算发布这个插件,但是发现这个插件发布后,用户必须先安装jquery才行,否则插件不能使用,所以你把jquery放在dependencies。用户拿到你的包之后,不需要gulp、scss,只需要jquery就可以运行你的包。
我们后面会不断的加入新的gulp插件,是不是要写到devDependencies里面去重新npm install
呢?不需要,我们可以通过命令还完成:
$ npm install --save-dev gulp-minify
执行完之后再打开看package.json文件,发现在devDependencies里面自动多了gulp-minify。--save
和--save-dev
的区别是,安装的时候,--save会把安装的新包加入到dependencies,--save-dev则会加入devDependencies。
另外,如果你打算npm uninstall
,也要记得带上--save[-dev]参数。
现在你已经了解了package.json,马上在你的项目目录下创建一个package.json吧。创建完之后直接运行
npm install
会安装所有依赖的包,快试试看!