node.js中npmnode npm 安装目录的模块在哪个目录下

提示:用户名只能修改一次,请慎重选择名字,大讲堂建议用户使用真实姓名作为用户名。
深入浅出Node.js2:Node.js&NPM的安装与配置
编者按:& & & &腾讯大讲堂与Cnode.js、HTML5梦工场、Alloyteam共同主办的腾讯大讲堂16期活动——互联网前端沙龙--Node Party深圳站将于10月13号在深圳腾讯大厦举办,近期腾讯大讲堂将推出一系理Node.js系列文章,供广大网友共同学习。Node.js安装与配置Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配置。(本文一律以0.6.1为例,0.6的其余版本,只需替换版本号即可。从可以查看到最新的二进制版本和源代码)。 Windows平台下的Node.js安装
在过去,Node.js一直不支持在Windows平台下原生编译,需要借助Cygwin或MinGW来模拟POSIX系统,才能编译安装。幸运的是2011年6月微软开始与Joyent合作移植Node.js到Windows平台上
( ),这次合作的成果最终呈现在0.6.x的稳定版的发布上。这次的版本发布使得Node.js在Windows平台上的性能大幅度提高,使用方面也更容易和轻巧,完全摆脱掉Cygwin或MinGW等实验室式的环境,并且在某些细节方面,表现出比Linux下更高的性能,细节参见。
在Windows(Windows7)平台下,我将介绍二种安装Node.js的方法,即普通和文艺安装方法。 普通的安装方法普通安装方法其实就是最简单的方法了,对于大多Windows用户而言,都是不太喜欢折腾的人,你可以从这里( )直接下载到Node.js编译好的msi文件。然后双击即可在程序的引导下完成安装。 在命令行中直接运行: node -v命令行将打印出: v0.6.1该引导步骤会将node.exe文件安装到C:\Program Files (x86)\nodejs\目录下,并将该目录添加进PATH环境变量。 文艺的安装方法Windows平台下的文艺安装方法主要提供给那些热爱折腾,喜欢编译的同学们。在编译源码之前需要注意的是你的Windows系统是否包含编译源码的工具。Node.js的源码主要由C++代码和JavaScript代码构成,但是却用gyp工具( )来做源码的项目管理,该工具采用Python语言写成的。在Windows平台上,Node.js采用gyp来生成Visual Studio Solution文件,最终通过VC++的编译器将其编译为二进制文件。所以,你需要满足以下两个条件:
Python(Node.js建议使用2.6或更高版本,不推荐3.0),可以从这里()获取。VC++ 编译器,包含在Visual Studio 2010中(VC++ 2010 Express亦可),VS2010可以从这里()找到。
下载Node.js的0.6.1版本的源码压缩包( )并解压之。 通过命令行进入解压的源码目录,执行vcbuild.bat release命令,然后经历了漫长的等待后,编译完成后,在Release目录下可以找到编译好的node.exe文件。通过命令行执行node -v。 命令行返回结果为: v0.6.1 事实上,如果你的编译环境中存在WiX工具集( ),执行vcbuild.bat msi release命令,你将会在Relase目录下找到node.msi。 是的,我们回到了一开始的普通安装方法。所谓文艺就是多走一些路,多看一些风景罢了。 Unix/Linux平台下的Node.js安装由于Node.js尚处于v0.x.x的版本的快速发展中,Unix/Linux平台的发行版都不会预置Node的二进制文件,通过源码进行编译安装是目前最好的选择。而且用Unix/Linux系统的同学们多数都是文艺程序员,本节只介绍如何通过源码进行编译和安装。 安装条件如同在Windows平台下一样,Node.js依然是采用gyp工具管理生成项目的,不同的是通过make工具进行最终的编译。所以Unix/Linux平台下你需要以下几个必备条件,才能确保编译完成: Python。用于gyp,可以通过在shell下执行python命令,查看是否已安装python,并确认版本是否符合需求(2.6或更高版本,但不推荐3.0)。源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。
& &a、Debian/Ubuntu下的工具是apt-get
& &b、RedHat/centOS下通过yum命令
& &c、Mac OS X下你可能需要安装xcode来获得编译器3、其次,如果你计划在Node.js中启用网络加密,OpenSSL的加密库也是必须的。该加密库是libssl-dev,可以通过apt-get install libssl-dev等命令安装。 检查环境并安装完成以上预备条件后,我们获取源码并进行环境检查吧: wget
tar zxvf node-v0.6.1.tar.gz
cd node-v0.6.1
./configure 上面几行命令是通过wget命令下载最新版本的代码,并解压之。./configure命令将会检查环境是否符合Nodejs的编译需要。 Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for gcc : ok Checking for library dl : yes
Checking for openssl : yes
Checking for library util : yes
Checking for library rt : yes
Checking for fdatasync(2) with c++ : yes 'configure' finished successfully (7.350s) 如果检查没有通过,请确认上面提到的三个条件是否满足。如果configure命令执行成功,就可以进行编译了: make
make install Nodejs通过make工具进行编译和安装(如果make install不成功,请使用sudo以确保拥有权限)。完成以上两步后,检查一下是否安装成功:
node -v 检查是否返回:
v0.6.1 至此,Nodejs已经编译并安装完成。如需卸载,可以执行make uninstall进行卸载。 小结以上介绍了*nix和Windows平台下Nodejs的安装,之后可以如同Nodejs官方网站上介绍的那样,编写example.js文件。 var http = require('http');
http.createServer(function (req, res) {& &&&
& &&&res.writeHead(200, {'Content-Type': 'text/plain'});& &&&
& &&&res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at 得到Hello World的响应。 安装NPMNPM的全称是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。没错,它就是Nodejs的包管理器。Nodejs自身提供了基本的模块。但是在这些基本模块上开发实际应用需要较多的工作。所幸的是笔者执笔此文的时候NPM上已经有了5112个Nodejs库或框架,这些库从各个方面可以帮助Nodejs的开发者完成较为复杂的应用。这些库的数量和活跃也从侧面反映出Nodejs社区的发展是十分神速和活跃的。下面我将介绍安装NPM和通过NPM安装Nodejs的第三方库,以及在大陆的网络环境下,如何更好的利用NPM。 Unix/Linux下安装NPM就像NPM的官网()上介绍的那样,安装NPM仅仅是一行命令的事情: curl
| sh 这里详解一下这句命令的意思,curl 是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。这里如果没有权限会安装不成功,需要加上sudo来确保权限: curl
| sudo sh 安装成功后执行npm命令,会得到一下的提示:
Usage: npm
is one of:
adduser, apihelp, author, bin, bugs, c, cache, completion,
config, deprecate, docs, edit, explore, faq, find, get,
help, help-search, home, i, info, init, install, la, link,
list, ll, ln, ls, outdated, owner, pack, prefix, prune,
publish, r, rb, rebuild, remove, restart, rm, root,
run-script, s, se, search, set, show, star, start, stop,
submodule, tag, test, un, uninstall, unlink, unpublish,
unstar, up, update, version, view, whoami 我们以underscore为例,来展示下通过npm安装第三方包的过程。
npm install underscore 返回:
./node_modules/underscore 由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库: npm --registry "" install underscore 如果你想将它设为默认的资源库,运行下面这条命令即可: npm config set registry "" 设置之后每次安装时就可以不用带上—registry参数。值得一提的是还有另一个镜像可用,该镜像地址是,如需使用,替换上面两行命令的地址即可。 Windows下安装NPM由于Nodejs最初在Linux开发下的历史原因,导致NPM一开始也不支持Windows环境,但是随着Nodejs成功移植到到Windows平台,NPM在Windows下的需求亦是日渐增加。下面开始Windows下的NPM之旅吧。 安装GIT工具由于github网站不支持直接下载打包了所有submodule的源码包,所以需要通过git工具来签出所有的源码。从,可以下载到msysgit这个Windows平台下的git客户端工具(最新版本文件为Git-1.7.7.1-preview.exe)。在下载之后双击安装。 下载NPM源码
打开命令行工具(CMD),执行以下命令,可以通过msysgit签出NPM的所有源码和依赖代码并安装npm。 git clone --recursive git:///isaacs/npm.git
node cli.js install npm -gf 在执行这段代码之前,请确保node.exe是跟通过node.msi的方式安装的,或者在PATH环境变量中。这段命令也会将npm加入到PATH环境变量中去,之后可以随处执行npm命令。如果安装中遇到权限方面的错误,请确保cmd命令行工具是通过管理员身份运行的。安装成功后,执行以下命令:
npm install underscore 返回:
./node_modules/underscore 如此,Windows平台下的NPM安装完毕。如果遭遇网络问题无法安装,请参照Linux下的NPM命令,添加镜像地址。
请选择禁言时间:
Copyright (C) 1998 - 2013 Tencent. All Rights Reserved.&&腾讯公司 版权所有node.js的npm的安装
本来不打算介绍node.js的npm的安装,但是发现node.js一些包的管理是通过npm来实现,还是要简单介绍一下npm。
1、npm是什么
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行、安装以及管理已经安装的包。
2、npm的安装()
[1]我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹。如下图
[2]启动cmd,输入
npm config set prefix "C:\Program Files\nodejs\node_global"以及
npm config set cache "C:\Program Files\nodejs\node_cache"
[3]现在我们来装个模块试试,选择express这个比较常用的模块。同样在cmd命令行里面,输入“npm install express -g”(“-g”这个参数意思是装到global目录下,也就是上面说设置的“C:\Program Files\nodejs\node_global”里面。)。待cmd里面的安装过程滚动完成后,会提示“express”装在了哪、版本还有它的目录结构是怎样。如下图
[4]如果存在“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”这个错误,需要设置环境变量在系统变量下新建"NODE_PATH",输入“C:\Program Files\nodejs\node_global\node_modules”。
3、package.json
npm命令运行时会读取当前目录的 package.json 文件和解释这个文件,这个文件基于 Packages/1.1 规范。在这个文件里你可以定义你的应用名称( name )、应用描述( description )、关键字( keywords )、版本号( version )、应用的配置项( config )、主页( homepage )、作者( author )、资源仓库地址( repository )、bug的提交地址( bugs ),授权方式( licenses )、目录( directories
)、应用入口文件( main )、命令行文件( bin )、应用依赖模块( dependencies )、开发环境依赖模块( devDependencies )、运行引擎( engines )和脚本( scripts )等。
对于开发者而言,开发和发布模块都依赖于他对这个文件 package.json 所包含的意义的正确理解。我们下面用一个本文共用的例子来说明:
"name": "test",
"version": "0.1.0",
"description": "A testing package",
"author": "A messed author ",
"dependencies": {
"express": "1.x.x",
"ejs": "0.4.2",
"redis": ">= 0.6.7"
"devDependencies": {
"vows": "0.5.x"
"main": "index",
"test": "./bin/test.js"
"scripts": {
"start": "node server.js",
"test": "vows test/*.js",
"preinstall": "./configure",
"install": "make && make install"
"engines": {
"node": "0.4.x"
}4、npm常用命令
npm install 安装nodejs的依赖包
例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6
npm install
将包安装到全局环境中
但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令
npm install
安装的同时,将信息写入package.json中
项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包
这样代码提交到github时,就不用提交node_modules这个文件夹了。
会引导你创建一个package.json文件,包括名称、版本、作者这些信息等
npm remove 移除
npm update 更新
npm ls 列出当前安装的了所有包
npm root 查看当前包的安装路径
npm root -g
查看全局的包的安装路径
帮助,如果要单独查看install命令的帮助,可以使用的npm help install
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Nodejs&npm的安装简明教程 - 简书
下载简书移动应用
写了5442字,被4人关注,获得了5个喜欢
Nodejs&npm的安装简明教程
这里没有什么要特别说明的,按照正常的步骤安装就可以了。安装了官方的 msi 文件,其实也是装了 npm,nodejs目录下就有 npm.cmd 文件,并且,两者都加到了path变量里面,可以在 cmd 下查看是否安装成功。
安装成功验证
对于仅仅是安装的话,教程到此就结束了,但是对于有强迫症的人来说,必须弄清楚,npm安装的模块在哪里,其实,默认的安装模块在 %USERPROFILE%\AppData\Roaming\npm 目录下。现在,下面的教程主要是修改这个目录。
我的nodejs安装目录为:F:\nodejs
3. 修改npm安装repo目录
由于重度整理症,我把 nodejs 文件夹放进了在 F 盘下新建的文件夹 node,因此,肯定要修改path变量的,这里先不急着修改。
mkdir node-global //存放node全局模块
mkdir npm-cache //npm缓存路径
现在的目的是:配置全局模块的安装路径到node-global文件夹,npm缓存到npm-cache文件夹命令如下:
npm config set prefix "F:\node\node-global"
npm config set cache "F:\node\npm-cache"
现在回顾一下,我们已经修改了nodejs的路径和npm的路径(这两者的路径是一样的)还有node全局模块大多数都是提供命令行访问的,所以还要把F:\node\node-global加到系统PATH里面,方面直接运行使用!
4. 修改PATH变量
加入path变量的值为:;F:\node\nodejs\;F:\node\node-
修改path变量
npm安装模块
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 4人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
如何样写一个 node.js模块以及NPM Package
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口npm 模块安装机制简介 - 阮一峰的网络日志
npm 模块安装机制简介
是 Node 的模块管理器,功能极其强大。它是 Node 获得成功的重要原因之一。
正因为有了npm,我们只要一行命令,就能安装别人写好的模块 。
$ npm install
本文介绍 npm 模块安装机制的细节,以及如何解决安装速度慢的问题。
一、从 npm install 说起
命令用来安装模块到node_modules目录。
$ npm install &packageName>
安装之前,npm install会先检查,node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。
如果你希望,一个模块不管是否安装过,npm 都要强制重新安装,可以使用-f或--force参数。
$ npm install &packageName> --force
二、npm update
如果想更新已安装模块,就要用到命令。
$ npm update &packageName>
它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装。
三、registry
npm update命令怎么知道每个模块的最新版本呢?
答案是 npm 模块仓库提供了一个查询服务,叫做 registry 。以 npmjs.org 为例,它的查询服务网址是
这个网址后面跟上模块名,就会得到一个 JSON 对象,里面是该模块所有版本的信息。比如,访问 ,就会看到 react 模块所有版本的信息。
它跟下面命令的效果是一样的。
$ npm view react
# npm view 的别名
$ npm info react
$ npm show react
$ npm v react
registry 网址的模块名后面,还可以跟上版本号或者标签,用来查询某个具体版本的信息。比如, 访问 https://registry.npmjs.org/react/v0.14.6 ,就可以看到 React 的 0.14.6 版。
返回的 JSON 对象里面,有一个dist.tarball属性,是该版本压缩包的网址。
shasum: '2a57c2cfad8de0fa47fb0c5cf5c6a',
tarball: 'http://registry.npmjs.org/react/-/react-0.14.6.tgz'
到这个网址下载压缩包,在本地解压,就得到了模块的源码。npm install和npm update命令,都是通过这种方式安装模块的。
四、缓存目录
npm install或npm update命令,从 registry 下载压缩包之后,都存放在本地的缓存目录。
这个缓存目录,在 Linux 或 Mac 默认是用户主目录下的.npm目录,在 Windows 默认是%AppData%/npm-cache。通过配置命令,可以查看这个目录的具体位置。
$ npm config get cache
$HOME/.npm
你最好浏览一下这个目录。
$ ls ~/.npm
$ npm cache ls
你会看到里面存放着大量的模块,储存结构是{cache}/{name}/{version}。
$ npm cache ls react
~/.npm/react/react/0.14.6/
~/.npm/react/react/0.14.6/package.tgz
~/.npm/react/react/0.14.6/package/
~/.npm/react/react/0.14.6/package/package.json
每个模块的每个版本,都有一个自己的子目录,里面是代码的压缩包package.tgz文件,以及一个描述文件package/package.json。
除此之外,还会生成一个{cache}/{hostname}/{path}/.cache.json文件。比如,从 npm 官方仓库下载 react 模块的时候,就会生成registry.npmjs.org/react/.cache.json文件。
这个文件保存的是,所有版本的信息,以及该模块最近修改的时间和最新一次请求时服务器返回的 ETag 。
"modified":"T23:52:45.571Z",
"_etag":"\"7S37I0775YLURCFIO8N85FO0F\""
对于一些不是很关键的操作(比如npm search或npm view),npm会先查看.cache.json里面的模块最近更新时间,跟当前时间的差距,是不是在可接受的范围之内。如果是的,就不再向远程仓库发出请求,而是直接返回.cache.json的数据。
.npm目录保存着大量文件,清空它的命令如下。
$ rm -rf ~/.npm/*
$ npm cache clean
五、模块的安装过程
总结一下,Node模块的安装过程是这样的。
发出npm install命令
npm 向 registry 查询模块压缩包的网址
下载压缩包,存放在~/.npm目录
解压压缩包到当前项目的node_modules目录
注意,一个模块安装以后,本地其实保存了两份。一份是~/.npm目录下的压缩包,另一份是node_modules目录下解压后的代码。
但是,运行npm install的时候,只会检查node_modules目录,而不会检查~/.npm目录。也就是说,如果一个模块在~/.npm下有压缩包,但是没有安装在node_modules目录中,npm 依然会从远程仓库下载一次新的压缩包。
这种行为固然可以保证总是取得最新的代码,但有时并不是我们想要的。最大的问题是,它会极大地影响安装速度。即使某个模块的压缩包就在缓存目录中,也要去远程仓库下载,这怎么可能不慢呢?
另外,有些场合没有网络(比如飞机上),但是你想安装的模块,明明就在缓存目录之中,这时也无法安装。
六、--cache-min 参数
为了解决这些问题,npm 提供了一个--cache-min参数,用于从缓存目录安装模块。
--cache-min参数指定一个时间(单位为分钟),只有超过这个时间的模块,才会从 registry 下载。
$ npm install --cache-min 9999999 &package-name>
上面命令指定,只有超过999999分钟的模块,才从 registry 下载。实际上就是指定,所有模块都从缓存安装,这样就大大加快了下载速度。
它还有另一种写法。
$ npm install --cache-min Infinity &package-name>
但是,这并不等于离线模式,这时网络连接。因为现在的--cache-min实现有一些问题。
(1)如果指定模块不在缓存目录,那么 npm 会连接 registry,下载最新版本。这没有问题,但是如果指定模块在缓存目录之中,npm 也会,发出指定模块的 etag ,服务器返回状态码304,表示不需要重新下载压缩包。
(2)如果某个模块已经在缓存之中,但是版本低于要求,npm会,而不是去 registry 下载最新版本。
npm 团队存在这些问题,正在。并且,将来会提供一个--offline参数,使得 npm 可以在离线情况下使用。
不过,这些改进没有日程表。所以,当前使用--cache-min改进安装速度,是有问题的。
七、离线安装的解决方案
社区已经为npm的离线使用,提出了几种解决方案。它们可以大大加快模块安装的速度。
解决方案大致分成三类。
第一类,Registry 代理。
上面三个模块的用法很类似,都是在本机起一个 Registry 服务,所有npm install命令都要通过这个服务代理。
# npm-proxy-cache
$ npm --proxy http://localhost:8080 \
--https-proxy http://localhost:8080 \
--strict-ssl false \
# local-npm
$ npm set registry http://127.0.0.1:5080
# npm-lazy
$ npm --registry http://localhost:8080/ install socket.io
有了本机的Registry服务,就能完全实现缓存安装,可以实现离线使用。
第二类,npm install替代。
如果能够改变npm install的行为,就能实现缓存安装。 工具就是这个思路。凡是使用npm install的地方,都可以使用npm-cache替代。
$ npm-cache install
第三类,node_modules作为缓存目录。
这个方案的思路是,不使用.npm缓存,而是使用项目的node_modules目录作为缓存。
上面两个工具,都能将项目的node_modules目录打成一个压缩包,以后安装的时候,就从这个压缩包之中取出文件。
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
浏览器安全的基石是"同源政策"(same-origin policy)。很多开发者都知道这一点,但了解得不全面。
前面的文章介绍了 Systemd 的操作命令和基本用法,今天给出一个实例,如何使用 Systemd 启动一个 Node 应用。
越来越多的人,使用React开发Web应用。它的测试就成了一个大问题。

我要回帖

更多关于 nodejs npm是什么 的文章

 

随机推荐