2

使用packages.json文件——Working with package.json

原文

管理本地下载的npm packages(modules)的最好方法是使用package.json文件。

一个package.json文件:

  • 包含你的项目所依赖的package的列表。
  • 允许你使用semiantic versioning rules去指定你的项目所依赖的packages的版本。
  • 使你的项目可以复制,因此可以更容易的分享给其他开发者。

要求 requirements

一个package.json必须具有:

  • name

    • 全部小写
    • 一个单词,不允许有空格
    • 允许有-_
  • version

例如

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

创建一个package.json

有两个基本的方法来创建一个package.json文件。

1. 使用CLI询问方式(问卷)

创建一个你指定值的package.json,运行如下命令(cmd)

npm init

这会初始化一个命令行问卷即在命令行呈现一些列的问题,然后你提供一些值,最后会在该命令行运行的目录生成一个package.json文件。

2.生成一个默认的package.json文件

创建该文件只需运行npm init命令附带一个--yes或者-y的flag:

npm init -y

该方法将会生成一个从该项目中汲取一些信息的默认package.json文件。

  • name: 当前目录名
  • version: 始终1.0.0
  • description: 自述文件中的信息或空字符串""
  • main: 始终index.js
  • scripts: 默认情况下创建一个空的test脚本
  • keywords: 空
  • author: 空
  • license: ISC
  • bugs: 当前目录中的信息 (如果存在)
  • homepage: 当前目录中的信息 (如果存在)

你也可以使用命令行设置一些初始化的选项,常用的有:

npm set init.auther.email "xxx@npmjs.com"
npm set init.auther.name "npmjs"
npm set init.license "MIT"

注意:

如果在package.json中没有description字段,那么npm将使用README.md第一行的文字或者README文件来代替。description帮助人们在搜索npm时发现你的package,所以自定义个description在package.json文件将会使你的package更容易被找到。

怎样去自定义package.json的命令行问卷。

如果你想要创建很多的package.json文件,那么你也许想要自定义一些初始化时的问题,如此这些package.json将会包含一些你想要的重要信息。你可自定义一些字段来询问其值。

要做到这些,你需要创建一个.npm-init.js文件在你的home目录里。

一个简单的.npm-init.js应该看起来类似下面这样。

module.exports = {
  customeField:'Custom Field',
  otherCustomField:'This is field for key'
}

在你的home目录结合该文件运行npm init将会生成一个包含那些信息的package.json文件。

{
  customField: 'Custom Field',
  otherCustomField: 'This field is really cool'
}

指定依赖

指定你的项目需要的依赖前,你需要在package.json中列出你将要用到的这些packages。这里你需要列出两类packages:

  • dependencies:这类packages将在你的产品应用中引入和使用到。
  • devDependencies:这类packages只是在你开发和测试时要使用到的。

手动编辑你的pacakge.json

你可以手动编辑你的package.json。你可以在package.json文件中创建一个dependencies属性,该属性是一个对象,该对象的值便是那些你的项目中所要依赖的packages的名字。它将指向一个semver表达式,该表达式指定该项目与你的项目兼容的版本。

在你的项目里那些只是本地开发使用到的packages,那么可以使用上面同样的方式列出packages到devDependensices中。

例如:一个项目在最终产品中使用到了版本为1的my_dep的package,在开发时使用到了版本为3的my_test-framework的package:

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

安装时的--save和--save-dev flags

添加依赖到package.json的较简单方法是在命令行使用npm install命令时使用flags。即--save(默认)或者--save-dev

添加一条到package.json的dependencies:

npm istall <package_name> --save

添加一条到package.json的devDependencies:

npm istall <package_name> --save-dev

管理依赖的版本

npm使用语义化版本控制(Semantic Versioning),即一直说的SemVer,来管理和组织版本。

如果在你的目录里有一个package.json文件那么你运行npm install,npm将按照SmeVer来下载该文件中的最新版本的依赖。

更多

想要了解更多关于packge.json的功能,查看第八章的"本地下载"的相关视频

学习更多关于semantic versioning的信息,点击这里https://docs.npmjs.com/gettin...


farmerz
1.4k 声望93 粉丝

可可西里,可可西里,我只是想去看一看。