NPM 包管理中package.json文件的使用

 2016年04月07日    208     声明


NPM包管理系统中,package.json是一个重要文件,通过这个文件可以进行模块述、管理局部安装的包、运行脚本等。


  1. package.json文件的作用
  2. package.json中的必须项
  3. 3. 创建package.json文件
  4. 管理依赖项

1. package.json文件的作用

我们在项目中管理项目依赖包时,通过会创建一个package.json文件,这个有很多作用,如:

  • 指定包/项目名、版本号
  • 指定程序入口点
  • 指定包npm脚本信息
  • 为项目所依赖的包提供文档
  • 根据npm的语义规则为依赖包指定所需的版本


2. package.json中的必须项

package.json是一个json格式的文件。在一个package.json,至少应该包含以下属性:

  • "name":包/项目名。命名规则如下:
    • 全部小写
    • 只能是一个单词,不能有空格
    • 可以包含横线、下划线
  • "version":版本号

示例,下面是一个最简单化的package.json文件:

{
  "name": "my-package-name",
  "version": "1.0.0"
}


3. 创建package.json文件

3.1 问答方式创建

创建一个package.json文件,可以使用npm init命令:

npm init

输入命令后,npm会通过命令行问答的方式来初始化并创建package.json文件。

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (npm) my-package
version: (1.0.0) 
description: 我的第一个包
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: IT笔录-itbilu.com
license: (ISC) 
About to write to /Users/liuht/code/npm/package.json:

{
  "name": "my-package",
  "version": "1.0.0",
  "description": "我的第一个包",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "IT笔录-itbilu.com",
  "license": "ISC"
}

Is this ok? (yes) 


3.2 --yes初始化标识创建

如果觉得命令行模式复杂,可以添加--yes-y参数,这样npm就会使用一些默认值进行初始化。

npm init --yes

这样,你不用回答任何问题就可以创建一个包含以下初始值的package.json文件:

{
  "name": "my_package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

在这个文件中各字段值,及取值方法如下:

  • name:包/项目名。当不存在git目录时,使用文件夹名;存在时使用git库名
  • version:版本号。默认为1.0.0
  • description:包/项目的描述。默认为空("")
  • main:包/项目的启动文件(入口点)。默认为index.js
  • scripts:脚本。默认会创建一个空的test脚本。可以通过npm <script-name>的命令格式执行脚本,如:npm test会执行测试脚本。
  • keywords:在npm中使用的查询关键字。默认为空数组([]
  • author:包/项目作者。默认为空("")
  • license:发行许可。默认为ISC


4. 管理依赖项

如果项目依赖(使用)了其它的包,也可以在package.json文件中进行管理。有以下两种管理依赖包的方式:

  • dependencies:在生产环境所使用的包
  • devDependencies:在开发环境所使用的包

如,在项目生产环境中需要版本不低于1.0名为my_dep的包,而在开发环境中还需要版本不低于3.1名为my_test_framework的包,编辑这两个节点如下:

{
  "name": "my_package",
  "version": "1.0.0",
  "dependencies": {
    "my_dep": "^1.0.0"
  },
  "devDependencies" : {
    "my_test_framework": "^3.1.0"
  }
}

添加后运行npm install命令,相关模块就会被安装到当前项目的node_modules目录下。


使用--save--save-dev安装参数

npm提供了更简单的安装和保存包的方式,在安装命令中添加--save--save-dev参数,指定的包就会被安装且依赖信息会被保存在dependenciesdevDependencies节点中。

将包信息写入package.json文件的dependencies节点下:

npm install <package_name> --save

将包信息写入package.json文件的devDependencies节点下:

npm install <package_name> --save-dev