目前遇到的问题:

  1. 拷贝工程后如何还原?
  2. 如何区分开发依赖和生产依赖?
  3. 如果自身的项目也是一个包,如何描述包的信息

以上这些问题都需要通过包的配置文件解决

配置文件package.json

npm 将每个使用 npm 的工程本身 都看作是一个包,包的信息需要通过一个名称固定的配置文件来描述
配置文件的名称固定为:package.json
可以手动创建该文件,而更多的时候,是通过命令npm init创建的
配置文件中可以描述大量的信息,包括:

  • name:包的名称,该名称必须是英文单词字符,支持连接符
  • version:版本
    • 版本规范:主版本号.次版本号.补丁版本号
    • 主版本号:仅当程序发生了重大变化时才会增长,如新增了重要功能、新增了大量的API、技术架构发生了重大变化
    • 次版本号:仅当程序发生了一些小变化时才会增长,如新增了一些小功能、新增了一些辅助型的API
    • 补丁版本号:仅当解决了一些 bug 或 进行了一些局部优化时更新,如修复了某个函数的 bug、提升了某个函数的运行效率
  • description:包的描述
  • homepage:官网地址
  • author:包的作者,必须是有效的 npm 账户名,书写规范是 account
    • 例如:zhangsan zhangsan@gmail.com,不正确的账号和邮箱可能导致发布包时失败
    • 安装后,文件内的样子

image.png

  • repository:包的仓储地址,通常指 git 或 svn 的地址,它是一个对象
    • type:仓储类型,git 或 svn
    • url:地址

image.png

  • main:包的入口文件,使用包的人默认从该入口文件导入包的内容
  • keywords: 搜索关键字,发布包后,可以通过该数组中的关键字搜索到包

image.png

  • dependencies:生产环境依赖
  • devDependencies: 开发环境依赖

使用npm init —yesnpm init -y可以在生成配置文件时自动填充默认配置

保存依赖关系

大部分时候,我们仅仅是开发项目,并不会把它打包发布出去,尽管如此,我们仍然需要package.json文件

package.json文件最重要的作用,是记录当前工程的依赖

  • dependencies:生产环境的依赖包
  • devDependencies:仅开发环境的依赖包


    配置好依赖后,使用下面的命令即可安装依赖
    本地安装所有依赖 dependencies + devDependencies

  • npm install

  • npm i

仅安装生产环境的依赖 dependencies

  • npm install —production

这样一来,代码移植就不是问题了,只需要移植源代码和package.json文件,不用移植node_modules目录,然后在移植之后通过命令即可重新恢复安装

为了更加方便的添加依赖,npm支持在使用install命令时,加入一些额外的参数,用于将安装的依赖包保存到package.json文件中
涉及的命令如下

安装依赖到生产环境

  • npm i 包名
  • npm i —save 包名
  • npm i -S 包名

    安装依赖到开发环境

  • npm i —save-dev 包名

  • npm i -D 包名

自动保存的依赖版本,例如^15.1.3,这种书写方式叫做语义版本号(semver version)