nodejs中npm常用命令

一、npm详解

npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。通过npm可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。

npm的官网:https://www.npmjs.com/,npm的官方帮助文档:https://docs.npmjs.com/

1、npm install moduleNames:安装Node模块

安装完毕后会在当前目录下生成一个node_modules目录,其目录下就是安装的各个node模块。

node的安装分为全局模式和本地模式。

一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。

在全局模式下,Node包会被安装到Node的安装目录下的node_modules下。

全局安装命令为$npm install -g moduleName。

获知使用$npm set global=true来设定安装模式,$npm get global可以查看当前使用的安装模式。

示例:

npm install express 

默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install [email protected]

npm install-g 

将包安装到全局环境中

注意在代码中直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

下面介绍一下本地安装与全局安装的区别:

本地安装

1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。

2. 可以通过 require() 来引入本地安装的包。

全局安装

1. 将安装包放在 /usr/local 下。

2. 可以直接在命令行里使用。

3. 不能通过 require() 来引入本地安装的包。

npm install--save 

安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

2、npm view moduleNames:查看node模块的package.json文件夹

注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用$npm view moduleName labelName

3、npm list:查看当前目录下已安装的node包

注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当前安装的所有node包

4、npm help:查看帮助命令

5、npm view moudleName dependencies:查看包的依赖关系

6、npm view moduleName repository.url:查看包的源文件地址

7、npm view moduleName engines:查看包所依赖的Node的版本

8、npm help folders:查看npm使用的所有文件夹

9、npm rebuild moduleName:用于更改包内容后进行重建

10、npm outdated:检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

11、npm update moduleName:更新node模块

12、npm uninstall moudleName:卸载node模块

13npm cache clean 清理缓存

14、一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访问npm的json文件夹的方法如下:

$ npm help json 

此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打开。

15、发布一个npm包的时候,需要检验某个包名是否已存在

$ npm search packageName

16、npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等

17、npm remove移除

18、npm ls 列出当前安装的了所有包

19、npm root:查看当前包的安装路径

npm root -g:查看全局的包的安装路径

20、npm -v:查看npm安装的版本

更换npm源

由于npm的源在国外,所以国内用户使用起来各种不方便。下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选择使用。

淘宝npm镜像

搜索地址:http://npm.taobao.org/

registry地址:http://registry.npm.taobao.org/

cnpmjs镜像

搜索地址:http://cnpmjs.org/

registry地址:http://r.cnpmjs.org/

下面以淘宝npm为例介绍如何使用:

1.临时使用

npm --registry https://registry.npm.taobao.org install express

2.持久使用

npm config set registry https://registry.npm.taobao.org

// 配置后可通过下面方式来验证是否成功

npm config get registry

// 或

npm info express

3.通过cnpm使用

npm install -g cnpm --registry=https://registry.npm.taobao.org

// 使用

cnpm install express

二、package.json详解

package.json 位于模块的目录下,用于定义包的属性。接下来让我们来看下 zookeeper 包的 package.json 文件,位于 node_modules/zookeeper/package.json 内容

{
  "name": "zookeeper",
  "description": "apache zookeeper client (zookeeper async API >= 3.4.0)",
  "version": "3.4.8-1",
  "author": {
    "name": "Yuri Finkelstein",
    "email": "[email protected]"
  },
  "contributors": [
    {
      "name": "Yuri Finkelstein",
      "email": "[email protected]"
    },
    {
      "name": "Woody Anderson",
      "email": "[email protected]"
    },
    {
      "name": "Mark Cavage",
      "email": "[email protected]"
    },
    {
      "name": "Dave Dopson",
      "email": "[email protected]"
    },
    {
      "name": "David Trejo",
      "email": "[email protected]"
    },
    {
      "name": "Pooya Karimian",
      "email": "[email protected]"
    },
    {
      "name": "Jakub Lekstan",
      "email": "[email protected]"
    },
    {
      "name": "Matt Lavin",
      "email": "[email protected]"
    },
    {
      "name": "Roy Cheng",
      "email": "[email protected]"
    }
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/yfinkelstein/node-zookeeper.git"
  },
  "keywords": [
    "apache",
    "zookeeper",
    "client"
  ],
  "dependencies": {
    "async": "~0.2.6",
    "nan": "~2.0.9",
    "underscore": "*"
  },
  "devDependencies": {
    "log4js": "~0.6.0",
    "webworker": ">=0.8.4"
  },
  "main": "lib/index",
  "scripts": {
    "build": "node-gyp configure build",
    "test": "pushd test; ./test; popd",
    "prepublish": "./scripts/prepublish.sh",
    "install": "node-gyp rebuild"
  },
  "engines": {
    "node": ">=0.8"
  },
  "gypfile": true,
  "gitHead": "61b57899a7841eca566b98ad155a35c65a6588ca",
  "bugs": {
    "url": "https://github.com/yfinkelstein/node-zookeeper/issues"
  },
  "homepage": "https://github.com/yfinkelstein/node-zookeeper#readme",
  "_id": "[email protected]",
  "_shasum": "1c3c2575460567117bdc637f7d62cb1727d0b054",
  "_from": "[email protected]",
  "_npmVersion": "3.8.2",
  "_nodeVersion": "4.4.0",
  "_npmUser": {
    "name": "mdlavin",
    "email": "[email protected]"
  },
  "dist": {
    "shasum": "1c3c2575460567117bdc637f7d62cb1727d0b054",
    "tarball": "https://registry.npmjs.org/zookeeper/-/zookeeper-3.4.8-1.tgz"
  },
  "maintainers": [
    {
      "name": "woodya",
      "email": "[email protected]"
    },
    {
      "name": "ddopson",
      "email": "[email protected]"
    },
    {
      "name": "yfinkelstein",
      "email": "[email protected]"
    },
    {
      "name": "josephmoniz",
      "email": "[email protected]"
    },
    {
      "name": "mcavage",
      "email": "[email protected]"
    },
    {
      "name": "kuebk",
      "email": "[email protected]"
    },
    {
      "name": "mdlavin",
      "email": "[email protected]"
    }
  ],
  "_npmOperationalInternal": {
    "host": "packages-12-west.internal.npmjs.com",
    "tmp": "tmp/zookeeper-3.4.8-1.tgz_1458267465884_0.18325493787415326"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/zookeeper/-/zookeeper-3.4.8-1.tgz",
  "readme": "ERROR: No README data found!"
}

Package.json 属性说明

  • name - 包名。

  • version - 包的版本号。

  • description - 包的描述。

  • homepage - 包的官网 url 。

  • author - 包的作者姓名。

  • contributors - 包的其他贡献者姓名。

  • dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

  • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

  • main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。

  • keywords - 关键字

版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

如果只是修复bug,需要更新Z位。

如果是新增了功能,但是向下兼容,需要更新Y位。

如果有大变动,向下不兼容,需要更新X位。

版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档。

欢迎转载,转载请注明来源:一路博客:http://www.16boke.com/article/detail/150

你可能感兴趣的:(NodeJS开发,NodeJS)