npm 与 package.json 快速入门教程

转自:https://blog.csdn.net/u011240877/article/details/76582670html

npm 是前端开发普遍使用的包管理工具,以前使用 Weex 时看了阮一峰前辈的文章了解了一些,此次结合官方文章总结一下,加深下理解吧!

1. 什么是 npm?
官方文档中对它的介绍是:前端

npm makes it easy for JavaScript developers to share and reuse code, and it makes it easy to update the code that you’re sharing.

即: npm 是一个包管理器,它让 JavaScript 开发者分享、复用代码更方便(有点 maven 的感受哈)。

在程序开发中咱们经常须要依赖别人提供的框架,写 JS 也不例外。这些能够重复的框架代码被称做包(package)或者模块(module),一个包能够是一个文件夹里放着几个文件,同时有一个叫作 package.json 的文件。

一个网站里一般有几十甚至上百个 package,分散在各处,一般会将这些包按照各自的功能进行划分(相似咱们安卓开发中的划分子模块),可是若是重复造一些轮子,不如上传到一个公共平台,让更多的人一块儿使用、参与这个特定功能的模块。

而 npm 的做用就是让咱们发布、下载一些 JS 轮子更加方便。
咱们能够去官方网站 https://www.npmjs.com/ 浏览、搜索想要的轮子,也能够直接在命令行中 search 一下意中轮。
使用 npm 后咱们能够很是方便地查看依赖的轮子是否有更新、是否须要下载新版本。

如今咱们知道 npm 是干什么的了。当人们提及 “npm” 时,可能在说三个东西:vue

  •     一个网站,就是前面提到用于搜索 JS 模块的网站:https://www.npmjs.com/
  •     一个仓库,保存着人们分享的 JS 模块的大数据库
  •     命令行里的客户端,开发者使用它来管理、安装、发布模块

只要开发者发布某个模块到仓库中,其余人就能够从 npm 网站或者命令行中下载、使用它了!html5

 

2. 安装 npm
npm 是依附于 node.js 的,咱们能够去它的官网 https://nodejs.org/en/download/ 下载安装 node.js。
下载好 node.js, npm 也就有了,使用 npm -v 查看安装的 npm 版本:node

zhangshixin$ node -v
v6.10.0

 

3. 更新 npm
npm 更新地可比 node 勤快多了,所以你下载的 node 附带的 npm 版本可能不是最新的,你可使用以下命令下载最新 npm:webpack

npm install npm@latest -g

其中 install 不用介绍了,就是安装,后面的 npm@latest 就是 <packageName>@<version> 的格式,咱们在下载其余模块时也是这个格式。-g 表明全局安装。web

 

4. package.json 文件
    package.json 文件很是重要,所以须要单独一小节介绍。
管理本地安装 npm 包的最好方式就是建立 package.json 文件。
一个 package.json 文件能够有如下几点做用:数据库

  •     做为一个描述文件,描述了你的项目依赖哪些包
  •     容许咱们使用 “语义化版本规则”(后面介绍)指明你项目依赖包的版本
  •     让你的构建更好地与其余开发者分享,便于重复使用


4.1 package.json 如何建立
使用 npm init 便可在当前目录建立一个 package.json 文件:npm

 

4.2 package.json 的内容
package.json 文件至少要有两部份内容:json

  •     “name”

        所有小写,没有空格,可使用下划线或者横线

  •     “version”

        x.x.x 的格式
        符合“语义化版本规则”

好比:

{
  "name": "shixinzhang-demo-package",
  "version": "1.0.0"
}

 

其余内容:
    description:描述信息,有助于搜索
    main: 入口文件,通常都是 index.js
    scripts:支持的脚本,默认是一个空的 test
    keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目
    author:做者信息
    license:默认是 MIT
    bugs:当前项目的一些错误信息,若是有的话

咱们能够为 init 命令设置一些默认值,好比:

> npm set init.author.email "shixinzhang2016@gmail.com"
> npm set init.author.name "shixinzhang"
> npm set init.license "MIT"

    注意:
    若是 package.json 中没有 description 信息,npm 使用项目中的 README.md 的第一行做为描述信息。这个描述信息有助于别人搜索你的项目,所以建议好好写 description 信息。

4.3 指定依赖的包
咱们须要在 package.json 文件中指定项目依赖的包,这样别人在拿到这个项目时才可使用 npm install 下载。
包有两种依赖方式:

  •     dependencies:在生产环境中须要用到的依赖
  •     devDependencies:在开发、测试环境中用到的依赖


举个例子:

{
    "name": "my-weex-demo",
    "version": "1.0.0",
    "description": "a weex project",
    "main": "index.js",
    "scripts": {
        "build": "weex-builder src dist",
        "build_plugin": "webpack --config ./tools/webpack.config.plugin.js --color",
        "dev": "weex-builder src dist -w",
        "serve": "serve -p 8080"
    },
    "keywords": [
        "weex"
    ],
    "author": "fkysly@gmail.com",
    "license": "MIT",
    "devDependencies": {
        "babel-core": "^6.14.0",
        "babel-loader": "^6.2.5",
        "babel-preset-es2015": "^6.18.0",
        "vue-loader": "^10.0.2",
        "eslint": "^3.5.0",
        "serve": "^1.4.0",
        "webpack": "^1.13.2",
        "weex-loader": "^0.3.3",
        "weex-builder": "^0.2.6"
    },
    "dependencies": {
        "weex-html5": "^0.3.2",
        "weex-components": "*"
    }
}
View Code

 

5. Semantic versioning(语义化版本规则)
https://docs.npmjs.com/getting-started/semantic-versioning

dependencies 的内容,以 "weex-html5": "^0.3.2" 为例,咱们知道 key 是依赖的包名称,value 是这个包的版本。那版本前面的 ^ 或者版本直接是一个 * 是什么意思呢?
这就是 npm 的 “Semantic versioning”,简称”Semver”,中文含义即“语义化版本规则”。
在安卓开发中咱们有过这样的经验:有时候依赖的包升级后大改版,以前提供的接口不见了,这对使用者的项目可能形成极大的影响。
所以咱们在声明对某个包的依赖时须要指明是否容许 update 到新版本,什么状况下容许更新。
这就须要先了解 npm 包提供者应该注意的版本号规范。

若是一个项目打算与别人分享,应该从 1.0.0 版本开始。之后要升级版本应该遵循如下标准:

  •     补丁版本:解决了 Bug 或者一些较小的更改,增长最后一位数字,好比 1.0.1
  •     小版本:增长了新特性,同时不会影响以前的版本,增长中间一位数字,好比 1.1.0
  •     大版本:大改版,没法兼容以前的,增长第一位数字,好比 2.0.0


了解了提供者的版本规范后, npm 包使用者就能够针对本身的须要填写依赖包的版本规则。
做为使用者,咱们能够在 package.json 文件中写明咱们能够接受这个包的更新程度(假设当前依赖的是 1.0.4 版本):
    若是只打算接受补丁版本的更新(也就是最后一位的改变),就能够这么写:

  •         1.0
  •         1.0.x
  •         ~1.0.4

    若是接受小版本的更新(第二位的改变),就能够这么写:

  •         1
  •         1.x
  •         ^1.0.4

    若是能够接受大版本的更新(天然接受小版本和补丁版本的改变),就能够这么写:

  •         *
  •         x


小结一下:总共三种版本变化类型,接受依赖包哪一种类型的更新,就把版本号准确写到前一位。

安装 package
使用 npm 安装 package 有两种方式:本地(当前项目路径)安装 或者 全局安装。
你选择哪一种安装方式取决于你将如何使用这个包:

  •     若是你只是想在当前项目里用 require() 加载使用,那你能够安装到本地

        npm install 默认就是安装到本地的

  •     若是你想要在命令行里直接使用,好比 grunt CLI,就须要安装到全局了

若是在你的项目里有 package.json 文件,运行 npm install 后它会查找文件中列出的依赖包,而后下载符合语义化版本规则的版本。
npm install 默认会安装 package.json 中 dependencies 和 devDependencies 里的全部模块。
若是想只安装 dependencies 中的内容,可使用 --production 字段:

npm install --production


6. 本地安装 package

npm 使用下面的命令下载一个包:

npm install <package_name>

后面就是要安装包的名称。这个命令会在当前目录建立一个 node_modules 目录,而后下载咱们指定的包到这个目录中。

相关文章
相关标签/搜索