npm使用入门(package.json)

npm使用入门

96 
crazygit 
2017.03.10 18:31 字数 1773 阅读 1617评论 0

NPM是什么


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.javascript

简单来讲,npm就是javascript的包管理工具,相似java语法当中的maven, gradle, python的pip。vue

安装

npm是和Node.js一块儿发布的,只要安装了Node.js,npm也安装好了,能够从Node.js的下载页下载对应操做系统的安装包安装便可。 安装好后,执行以下命令,检查是否安装成功。java

$ node -v
v6.10.0

$ npm -v
4.4.1

可是因为npm自身的更新频率比Node.js高不少,因此经过上面的命令安装的npm可能不是最新版本,能够经过下面的命令单独更新npmnode

$ npm install npm@latest -g

安装包

执行命令python

$ npm install <package_name>

即可以安装对应的包到执行命令的当前目录,并建立一个node_modules的文件夹,而后把须要安装的安装包下载到里面。webpack

使用package.json

经过上面的命令,直接安装的包默认都是最新版本的。可是在项目中,咱们怎么让一块儿开发的同事知道项目中用了哪些包,具体包的版本信息呢?这时package.json就上场了,能够把它想成是java语言中的pom.xml,
python语言中的requirements.txtgit

一个基本的package.json文件至少须要包含两个重要信息: 包名name和版本信息version
例如:github

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

建立package.json

咱们可使用命令npm init来初始化一个package.json文件,运行这个命令后,它会询问一些关于包的基本信息,根据实际状况回答便可。若是不喜欢这种方式,可使用npm init --yes命令直接使用默认的配置来建立package.json文件,最后根据须要修改建立好的package.json文件便可。web

package.json文件建立好后,咱们来看看它长得什么样子吧!vue-cli

{
  "name": "my_package",
  "description": "",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/ashleygwilliams/my_package.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/ashleygwilliams/my_package/issues"
  },
  "homepage": "https://github.com/ashleygwilliams/my_package"
}

主要字段的含义以下:

  • name: 模块名, 模块的名称有以下要求:

    • 所有小写
    • 只能是一个词语,没有空格
    • 容许使用破折号和下划线做为单词分隔符
  • version: 模块版本信息

  • description:关于模块功能的简单描述,若是这个字段为空的话,默认会从当前目录的READMD.mdREADME文件读取第一行内容做为它的默认值。
  • main: 模块被引入后,首先加载的文件,默认为index.js
  • scripts: 定义一些经常使用命令入口

相似git同样,npm也能够作一些简单的配置来设置一些咱们经常使用的信息

$ npm set init.author.email "wombat@npmjs.com"

$ npm set init.author.name "ag_dubs"

$ npm set init.license "MIT"

这样下次执行npm init的时候,就会用上咱们配置的一些默认信息啦!

安装模块

使用npm install会读取package.json文件来安装模块。安装的模块分为两类
dependenciesdevDependencies,分别对应生产环境须要的安装包和开发环境须要的安装包。

一样在安装模块的时候,能够经过指定参数来修改package.json文件,如

$ npm install <package_name> --save

$ npm install <package_name> --save-dev

来将新安装的模块信息记录到package.json文件。

更新模块

$ npm update

卸载模块

$ npm uninstall <package_name>

若是要在卸载模块的同时,也将他从package.json文件中移除,能够添加跟安装时候同样的参数,例如:

$ npm uninstall --save lodash

全局包管理

默认状况下。咱们执行默认的安装命令安装的包都是安装到当前目录下的,只能在当前目录下使用。可是假如咱们须要使用一些全局的软件,如grunt,咱们能够在安装的时候,添加-g选项来安装,方便后面在任何目录下均可以使用grunt相关的命令

$ npm install -g grunt

同理,更新全局的安装包只须要执行命令

$ npm update -g

为了查看当前哪些包须要更新,可使用以下命令来查看

$ npm outdated -g --depth=0
Package             Current  Wanted  Latest  Location
vue-cli               2.7.0   2.8.1   2.8.1
webpack              1.13.2   2.2.1   2.2.1
webpack-dev-server   1.14.1   2.4.1   2.4.1

卸载全局安装的包也只须要加上-g选项便可。如

$ npm uninstall -g jshint

建立本身的Node.js模块

一个Node.js模块就是一个能够发布到npm,供其余开发者下载和使用的模块。那么,到底怎样和其余开发者分享咱们的模块呢?

首先,咱们必须建立一个package.json文件,添加上关于咱们想要分享的模块信息,如:模块功能,开发者信息等。

一旦package.json文件建立好后,咱们须要建立一个模块被引入时,就加载的文件。
package.jsonmain字段指定的文件,默认为index.js。咱们须要在文件中将一个函数赋值给exports模块,方便其余开发者调用咱们的模块。如

exports.printMsg = function() {
  console.log("This is a message from the demo package");
}

包(Pacakges)和模块(Modules)

在使用npm的时候,有两个概念容易搞混,那就是包(Pacakges)和模块(Modules)。简单来讲,包和模块的区别以下:

  • 包是一个被package.json文件描述了的文件或者目录
  • 模块是能够被Node.js引用的文件或目录

什么是包?

a) a folder containing a program described by a package.json file
b) a gzipped tarball containing (a)
c) a url that resolves to (b)
d) a <name>@<version> that is published on the registry with (c)
e) a <name>@<tag> that points to (d)
f) a <name> that has a latest tag satisfying (e)
g) a git url that, when cloned, results in (a).

什么是模块?

  • A folder with a package.json file containing a main field.
  • A folder with an index.js file in it.
  • A JavaScript file.

npm配置

在使用npm时,咱们能够根据我的的须要,指定不少配置信息。
npm的配置信息加载优先级以下(从高到低)

  1. 命令行参数
  2. 环境变量
  3. npmrc文件
    1. 项目级别的npmrc文件(/path/to/my/project/.npmrc)
    2. 用户级别的npmrc文件(~/.npmrc)
    3. 全局的npmrc文件($PREFIX/etc/npmrc)
    4. npm内置的npmrc文件(/path/to/npm/npmrc)

查看配置

$ npm config list -l

配置npm源

最后介绍一个比较重要的配置,当咱们使用默认配置从npm官网下载模块时,因为网络的因素,会致使咱们的下载速度特别慢。因此,咱们能够配置一些国内的镜像来加快咱们的下载速度。在这里,我推荐使用淘宝的npm镜像, 具体使用方式以下:

  • 临时使用, 安装包的时候经过--registry参数便可

    $ npm install express --registry https://registry.npm.taobao.org
  • 全局使用

    $ npm config set registry https://registry.npm.taobao.org
      // 配置后可经过下面方式来验证是否成功
      npm config get registry
      // 或
      npm info express
  • 使用cnpm使用

    // 安装cnpm
      npm install -g cnpm --registry=https://registry.npm.taobao.org
    
      // 使用cnpm安装包
      cnpm install express

更多使用

请参考官方文档

相关文章
相关标签/搜索