##摘要##
不用官网首页的msi安装NodeJS && npm
Windows下如何方便管理使用Node的多个版本
灵活安装配置,方便多台计算机直接拷贝使用
##前言## 子在两千多年以前就曾经曰过, He said, “学而不思则罔,思而不学则怠”, 所以,学习还是要经常总结的(呃,子曰的那句话是这个意思吗??)~ 因此,我打算写一个系列的关于NodeJS文章,一来记录整理一下自己学习NodeJS过程中的小心得,二来拿出来分享给大家,关于同一主题,我们可以一起讨论一下。 这个系列的文章,肯定得从基础说起,但是争取不是那么水,大牛们也别看见基础的东西就只是华丽丽滴路过,一般真知灼见都体现在基础知识上的哦~嘿嘿 所以 我只是抛砖引玉,还望大牛们不吝分享自己的相关经验!!
我的github主页sunshine1988,嘿嘿 暂时没多少干货,过几天有空了把以前写的几个东东更新上去!
##计划## 先计划一下要写的内容吧:
NodeJS && npm超灵活安装 – Windows
NodeJS && npm超灵活安装 – Linux篇
npm常用命令详解
模块安装及路径配置
国内外NodeJS资源博客、社区收集分享
Node调试工具及技巧(开发环境调试,线上调试,内存泄露调试。。。)
local module开发总结
global && CLI module开发总结
nodejs运行云服务平台总结国外如 cloudfoundry、heroku、nodejitsu、NodeSocket,国内的当然是NAE喽,嘿嘿 不过 我还目前没有NAE的邀请码,木有试用过,国外的几个都用过了~
web框架系列。。。
哎,先想这些吧,后面还会写到关于session啊,流程控制&异步编程辅助啊,SQL客户端啊等等这些中间件模块的总结,写到那儿再说吧,反正是边学习边总结的!
##正文## 好啦,开始开天辟地第一篇~
如果在Node 0.4.x 版本以前说说Windows下的安装可能还有点讲头儿,现在人家官网都发布release版的msi文件了,还想说啥子呢?? 谁不会双击安装程序,然后无脑的一直“下一步”啊~
嗯 但是我第一次使用Node官网的msi安装,就再也不想用了! 首先,这个安装包功能上很像一个自解压包,而且“自解压“的路径还不询问你,官网文档还没有说明,第一次我安装完以后的感觉就是,我刚才做了什么,桌面上木有快捷方式,开始菜单没有启动项,这尼玛是要闹哪样啊?刚才装的Node呢??(请以一位Node初探者的身份考虑这种状况,反正遥想当年我是忍不住竖了下中指!)
废话讲了这么多,来点儿干货吧~
msi安装文件默认是安装(自解压)在Windows用户文件夹根目录底下的,以我的为例是:
C:\Users\Administrator
会有
node/
node执行程序和npm模块
npm/
默认的全局模块安装路径前缀
npm-cache/
npm安装模块的缓存目录,离线状态可以从这里读取方便安装
.npmrc
文本文件,存放npm的userconfig配置(后面会提到)
其他的一些相关文件或目录也会默认创建在此目录下
注:多谢[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[@be5invis](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)](/user/be5invis)提醒,现在是默认装到Program Files\nodejs
下, npm 的 repo在 %USERPROFILE%\AppData\Roaming\npm
且会自动加到系统PATH
下
node 和 npm 会加到 PATH 里
其实,node
目录下的node.exe就是一个绿色的可执行文件,拷到哪儿都可以用~
而npm也只不过是Node的一个全局模块而已~
弄清了这俩货的本质以后,那我们就可以为所欲为喽,下面我们来看如何灵活组织node执行程序,可以方便管理,随意拷贝,又能多版本共存使用!
后来又去官网,才发现人家提供这些单独的release files,在这里选择一个版本,以现在的node-0.6.17 npm-1.1.21为例:
首先,可以建立一个wrap文件夹,以在D盘根目录为例:
d:
mkdir node
cd node
建立几个子目录:
mkdir nodejs //存放node程序和npm模块
mkdir npm-global //存放node全局模块
mkdir npm-cache //npm缓存路径
然后,我们把node.exe文件和npm-1.1.21.zip文件拷贝到nodejs
目录下,解压npm压缩包到当前目录,这样会在nodejs
目录下出现npm的CLI执行脚本文件npm.cmd以及node_modules
目录,打开该目录会发现是npm模块的代码!
哦了,我们把D:\node\nodejs
路径加到系统环境变量PATH里面,重启CMD窗口,就哦了~
验证下吧:
node -v
npm -v
想必,到这里大家也已经有多版本共存的思路了吧,既然node.exe只是个单独的可执行程序,那直接把其他版本的拷到系统路径里面不就可以了,然后以版本号为后缀改名,用的时候,直接运行特殊的node版本即可~
下面是我的这个目录的截图:
验证下吧:
node -v
node-0.6.15 -v
那如何配置全局模块的安装路径到node-global
文件夹,npm缓存到npm-cache
文件夹呢?
这个属于npm配置选项了,后面文章会再详细讲到,这里只给出方法:
很简单:
npm config set prefix "D:\node\node-global"
npm config set cache "D:\node\node-cache"
node全局模块大多数都是提供命令行访问的,所以还要把D:\node\node-global
加到系统PATH里面,方面直接运行使用!!
验证下吧,装个全局模块:
npm install express -g
查看下node-global
和node-cache
文件夹下是否有惊喜,嘿嘿~
这样,我们如果想把一台电脑上安装的Node程序以及相关资源(全局模块,模块缓存等)挪到其他机子上,那就把node
整个目录拷贝走,然后在那台机子上按需配置下相关路径就大功告成啦,以前安装的模块缓存都有了,其他机子不上网照样可以安装模块~~
温馨提示: 缓存目录下文件会很多,所以谨慎拷贝哦~
##后话##
终于写完一篇了,万事开头难,可真难啊~~
嘿嘿 干货不多!但是希望对初学者有帮助~~
其实Windows下安装Node程序还有好多我没提到甚至我都没研究到的东西,比如说如果从源码直接编译安装,这些我还没有研究到,希望有经验的大牛牛们,有时间精力分享下~~
本文首发于CNode社区,转载请注明出处:http://cnodejs.org/topic/4fae80c02e8fb5bc650a8360
呵呵 你可以试下:
npm install npm -g
npm view npm -g
npm uninstall npm -g
你也可以不全局安装
npm install npm
require("npm");
然后使用npm模块提供的API~~
本质上npm就是一个Node模块,只不过它推荐全局安装,然后提供CLI使用方式~
当然,你可以把它看成node的一个工具! 不过那不是本质~
刚好今晚查看npm的命令,也将nodejs及npm的默认包装转移到其它盘。想不到楼主早早发文了。比较简单方法是npm config edit,直接编辑.npmrc,里面“;"是注释,修改后保存关闭即可。
嘿嘿 是的 使用npm config set
命令配置的 其实也是写到.npmrc
文件中的,我理解的是这些都是userconfig
, npm
中有一个userconfig
配置路径选项,就是配置那个.npmrc
文件保存路径的,可是测试了下,userconfig
值改变成功了,但npm config get
相关配置,还是去原来的.npmrc
文件中读的,不知道你对这个有木有研究?
等等,官方发布的 msi 包会把 node 装到 Program Files (x86)\nodejs\
npm 的 repo 在 %USERPROFILE%\AppData\Roaming\npm
node 和 npm 会加到 PATH 里