Node.js学习笔记(9、模块管理器npm)

npm简介

npm是Node.js默认的模块管理器,用来安装和管理node模块。在安装node的时候,会连带一起安装npm。node安装完成后,可以用下面的命令,查看一下npm的帮助文件。


# npm命令列表
npm help

# 各个命令的简单用法
npm -l

下面的命令分别查看npm的版本和配置。

npm -version

npm config list -l

npm的版本可以在Node更新的时候一起更新。如果你想单独更新npm,使用下面的命令。

npm update -global npm

上面的命令之所以最后一个参数是npm,是因为npm本身也是Node.js的一个模块。

查看模块信息

npm的info命令可以查看每个模块的具体信息。比如,查看underscore模块信息的命令是:

npm info underscore

上面命令返回一个JavaScript对象,包含了underscore模块的详细信息。

{ name: 'underscore',
  description: 'JavaScript\'s functional programming helper library.',
  'dist-tags': { latest: '1.5.2', stable: '1.5.2' },
  repository: 
   { type: 'git',
     url: 'git://github.com/jashkenas/underscore.git' },
  homepage: 'http://underscorejs.org',
  main: 'underscore.js',
  version: '1.5.2',
  devDependencies: { phantomjs: '1.9.0-1' },
  licenses: 
   { type: 'MIT',
     url: 'https://raw.github.com/jashkenas/underscore/master/LICENSE' },
  files: 
   [ 'underscore.js',
     'underscore-min.js',
     'LICENSE' ],
  readmeFilename: 'README.md'}

上面这个JavaScript对象的每个成员,都可以直接从info命令查询。

npm info underscore description
# JavaScript's functional programming helper library.

npm info underscore homepage
# http://underscorejs.org

npm info underscore version
# 1.5.2

模块的安装

每个模块可以“全局安装”,也可以“本地安装”。两者的差异是模块的安装位置,以及调用方法。

“全局安装”指的是将一个模块直接下载到Node的安装目录中,各个项目都可以调用。“本地安装”指的是将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块。一般来说,全局安装只适用于工具模块,比如npm和grunt。

默认情况下,npm install 命令是“本地安装”某个模块。

npm install [package name]

使用上面的命令,模块文件将下载到当前目录的 node_modules 子目录。

使用global参数,可以“全局安装”某个模块。

sudo npm install -global [package name]

global参数可以被简化成g参数。

sudo npm install -g [package name]

install命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上@和版本号。

npm install package_name@version

一旦安装了某个模块,就可以在代码中用require命令调用这个模块。

var backbone = require('backbone')

console.log(backbone.VERSION)

模块的升级和删除

npm update 命令可以升级本地安装的模块。

npm update [package name]

加上global参数,可以升级全局安装的模块。

npm update -global [package name]

npm uninstall 命令,删除本地安装的模块。

npm uninstall [package name]

加上global参数,可以删除全局安装的模块。

sudo npm uninstall [package name] -global

模块的查看和搜索

npm list命令,默认列出当前目录安装的所有模块。如果使用global参数,就是列出全局安装的模块。

npm list

npm -global list

向服务器端搜索某个模块,使用search命令(可使用正则搜索)。

npm search [搜索词]

如果不加搜索词,npm search 默认返回服务器端的所有模块。

npm run

在package.json文件有一项scripts,用于指定脚本命令,供npm直接调用。

"scripts": {
    "watch": "watchify client/main.js -o public/app.js -v",
    "build": "browserify client/main.js -o public/app.js",
    "start": "npm run watch & nodemon server.js"
  },

上面代码在scripts项,定义了三个脚本命令,并且每个命令有一个别名。使用的时候,在命令行键入npm run后面加上别名,就能调用相应的脚本命令。

npm run watch
npm run build
npm run start

npm link

一般来说,每个项目都会在项目目录内,安装所需的模块文件。也就是说,各个模块是局部安装。但是有时候,我们希望模块是一个符号链接,连到外部文件,这时候就需要用到npm link命令。

现在模块A(moduleA)的安装目录下运行npm link命令。

/path/to/moduleA $ npm link

上面的命令会在npm的安装目录内,生成一个符号链接文件。

/usr/local/share/npm/lib/node_modules/moduleA -> /path/to/moduleA

然后,转到你需要放置该模块的项目目录,再次运行npm link命令,并指定模块名。

/path/to/my-project  $ npm link moduleA

上面命令等同于生成了本地模块的符号链接。

/path/to/my-project/node_modules/moduleA -> /usr/local/share/npm/lib/node_modules/moduleA

然后,就可以在你的项目中,加载该模块了。

require('moduleA')

如果你的项目不再需要该模块,可以在项目目录内使用npm unlink命令,删除符号链接。

/path/to/my-project  $ npm unlink moduleA


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值