`
fantaxy025025
  • 浏览: 1248069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

nodejs中的环境变量:NODE_PATH

 
阅读更多

 

注:没有解决gulp本地文件依赖的问题。

 

====

From: nodejs 中的 NODE_PATH

在使用 nodejs 开发中我们都免不了要去安装一些第三方模块。

那么你或多或少的遇到过以下一些问题

再继续阅读之前,我们先来弄清楚一个概念。

npm install --global xxx 属于全局安装
npm install xxx 属于本地安装

安装的模块太多项目太臃肿,模块没能复用

你写一个项目 A 需要安装一个 express 模块,又开发一个项目 B 又需要安装一个 express 模块

项目中依赖包太多,文件过多,模块没法复用,各种问题浮现

由于 安装的依赖包过多(而且依赖包嵌套依赖包),如果一个项目依赖多的话,(比如依赖 gulp 系列 或 grunt 系列的项目构模块)那么一个项目可以说轻轻松松上百兆。如果想给想项目更换一个目录,都发现是痴心妄想了。(基本都是1-10KB的小文本文件组成了一个100多MB的项目,那得有多少个文件啊!想想如果像java那样,模块都是以jar包存在的压缩归档文件可能也好一点)。更别提部署了。

其实这里面的代码也就是 几十KB到1兆 是我们自己写的代码。这些文件想实现 复制,移动,部署是很方面的。

给部署带来的困扰

如果你部署过 node 项目到远程服务器,node_modules 目录的上传将是一件恐怖的事情

NODE_PATH 出现,模块复用,最佳实践方案

NODE_PATH 是干什么的呢?
操作系统中都会有一个PATH环境变量,想必大家都知道,当系统调用一个命令的时候,就会在PATH变量中注册的路径中寻找,如果注册的路径中有就调用,否则就提示命令没找到。

-> export PATH=$PATH: # 将 /usr/bin 追加到 PATH 变量中
-> export NODE_PATH="/usr/lib/node_modules;/usr/local/lib/node_modules" #指定 NODE_PATH 变量

那 NODE_PATH 就是NODE中用来寻找模块所提供的路径注册环境变量。我们可以使用上面的方法指定NODE_PATH环境变量。并且用;分割多个不同的目录。

加载时机

关于 node 的包加载机制我就不在这里废话了。NODE_PATH中的路径被遍历是发生在
从项目的根位置递归搜寻 node_modules 目录,直到文件系统根目录的 node_modules,如果还没有查找到指定模块的话,就会去NODE_PATH中注册的路径中查找

解决问题

基于 nodejs 的包加载路径搜索算法,我们可以 采用全局安装的方式,将我们的包安装到全局。
这样,我们的项目就可以共享全局中的依赖包。

了解全局

npm root -g 查看在你的系统中全局的路径。
我们也可以通过
npm config ls -l | grep prefix (*nix) 系统中
或是
npm config get prefix
来查看全局路径。
是的 prefix 字段就是全局base path

怎么设置全局路径呢?

# in *nix
npm config set prefix /path/to/global

# in windows
npm config set prefix C:\\Users\\pc\\global

求同存异,解决模块版本问题

差异性的解决方法

如果 项目A 使用了,express的3.x版本,项目B 使用了 express的4.x版本,那这种情况该怎么办呢?

可以将 NODE_PATH 指定的位置中存放 express的4.x版本,再将 项目B的 node_modules 目录中放置 3.x 版本。

这样就解决了模块版本差异性问题。

所以说,两种安装方式我们并不是只是用其中的一种,他们可以结合使用,根据 nodejs 的包加载机制,我们可以灵活使用。

部署不再是问题

在部署之前,我们可以将我们项目的所有可以全局安装的模块,都以全局的安装方式安装到服务器中。接下来我们就可以轻松,上传我们的项目到服务器中了。这样上传也会变得的很快。

然后配置我们的 NODE_PATH 环境变量。怎么配置上面也谈过,这里就不用多说了。(因为项目的部署方式多种多样,所以具体情况可以自行决定。)

本人是使用 PM2 部署管理Nodejs项目,所以我写在 配置文件中。

带来的问题

是的这种方式也有缺点。因为在使用 --global 参数的时候 --save 或 --save-dev参数是无效的。
这样就带来一个问题。此时 package.json 中的 dependenciesdevDependencies 将无法享受到npm自动更新带来的便利,不使用dependenciesdevDependencies 字段对我们的项目管理来说是不可接受的。

如何解决

我有一个不是很优雅地解决方法,但是也算是解决了这个问题,希望有更好解决办法的同学给我留言。
我写了一个小工具(npmafter),它的使用方法很简单, 它是跨平台的。兼容(Mac,Windows,Linux)。(我没有发布到github上,因为感觉会有更好的办法)

$ npm install -g http://yinchangsheng-blog.qiniudn.com/blog/nodejs/npmafter.tgz # install
# 然后我们安装任何模块就可以这样
$ npm install express -g | npmafter
$ npm install request q -g | npmafter --save
$ npm install mocha chai -g | npmafter --save-dev

是的 package.json 文件就会得到更新。
好的,如果你不纠结这个问题那么这个问题就算是解决了。

使用 NODE_PATH 可以很好的解决项目开发部署的问题。

 

 

-

9‘

da

s

afa

 

分享到:
评论

相关推荐

    webstorm中配置nodejs环境及npm的实例

    ——nodejs安装及环境配置 1.nodejs官网,下载windows...设置环境变量:变量名:NODE_PATH 值:D:\Program Files\nodejs\node_global\node_modules 注意:因为我是把nodejs安装在D:\Program Files\目录下,所以环境变量

    一键生成整库的mapper entity dao service serviceTest controller

    设置环境变量: # NODE_PATH = XXX\Node\nodejs # PATH = %NODE_PATH%\;%NODE_PATH%\node_modules;%NODE_PATH%\node_global; #3.安装apidoc # npm install apidoc -g // -g意思是安装到global目录下,也就是上面设置...

    windows 下安装nodejs 环境变量设置

    要设置两个东西,一个是PATH上增加node.exe的目录C:\Program Files\nodejs,一个是增加环境变量NODE_PATH,值为C:\Program Files\nodejs\node_modules 一、下载 去nodejs下载node.msi安装文件包,里面包含了node.js和...

    node-v8.11.3-x64.rar

    node-v8.11.3版本 1.下载安装 2.配置环境变量 安装位置加入到"path"中 用户变量: 新建NODE_PATH D:\nodejs\node_modules 新建文件夹node_global 和 node_cache 3.cmd ...4.node_global添加环境变量

    Nodejs-v4.2.4以及npm和cnpm优雅安装

    2.添加一个系统变量NODE_PATH 值为 “;D:\Program Files\node\node-global\node_modules;D:\Program Files\node\nodejs\node_modules” 这里写图片描述 3.用户变量的path中添加 “;D:\Program Files\node\...

    CentOS安装 nodeJs并配置环境变量

    进入安装目录: cd /opt 下载安装包: wget ...添加NODE_PATH环境变量 <>vim /etc/profile <>在文件末尾添加如下内容 export NODE_HOME=/opt/nodejs export PATH=PATH:PATH:PATH:N

    【JavaScript源代码】nodejs管理工具nvm安装过程详解.docx

    下载nvm-setup.zip,nvm-noinstall.zip 点击nvm-setup.exe安装,一路下一步,这里安装到C:\dev\nvm,安装完成后自动配置了环境变量:NVM_HOME,NVM_SYMLINK,也会添加到Path 验证是否安装成功,打开命令行cmd nvm常用的...

    vue安装使用.txt

    vue详细安装教程,配置环境变量: 系统变量: 新增: NODE_PATH D:\nodejs 添加修改Path: D:\nodejs\ 用户变量: 添加修改PATH: D:\nodejs\node_global cnpm config set prefix "D:\nodejs\...

    nodejs环境整合包

    5. NPM安装完成后,将"D:\nodejs\node_modules"加入系统环境变量NODE_PATH中。 6. 安装express: npm install express -g //安装最新版express npm install express@2.5.0 //安装指定版本express npm remove ...

    nodejs , node.exe

    下载node.exe之后,放到c盘nodejs文件下,在环境变量path里面加上 c:\nodejs\node.exe,在nodejs目录下建立server.js,文件里面写上这些 var http = require('http'); http.createServer(function (request, ...

    基于vue和springboot的客户管理系统源码+项目说明(毕设).zip

    然后在环境变量 -> 系统变量中新建一个变量名为 “NODE_PATH”, 值为“D:\Program Files\nodejs\node_modules” 最后编辑用户变量里的Path,将相应npm的路径改为:D:\Program Files\nodejs\node_global 2.Npm:安装...

    npm全局环境变量配置

    我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在nodejs的主目录下,便在nodejs下建立”node_global”及”node_cache”两个...增加NOEDE_PATH(全局变量模块存放位置),进入“系统

    node.js插件工具

    设置nodejs环境变量,在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容: #set for nodejs export NODE_HOME=/usr/local/node/0.10.24 export PATH=$NODE_HOME/bin:$PATH :...

    win7最后一个支持的nodejs-13.14.0版本附历史更新地址

    软件安装后,会自动添加在系统环境变量path添加,但是并没有在最后加上;,这里最好把;加上。 也可以新建 NOTE_HOME 把 path 里修改为 %NODE_HOME%; 最后在 cmd 窗口 输入 node -v 和 npm -v 来确认是否配置成功...

    Node.js Windows Binary二进制文件安装方法

    1.下载文件 安装包的下载路径为:...将node.exe所在目录和node_global加入到环境变量中。 先创建一个新的环境变量将node.exe所在的目录设为变量值。   然后找到Path这个变量将%NODE_PATH%和%NODE_PATH%\no

    rebbl:用于处理rebbl结果的网站

    确保您具有以下可用的环境变量: NODE_ENV : "development" // setting the env to development makes your local instance use local js/css files port : 3000 // port to run on mongoDBUri : "mongodb://...

    node-sass.zip

    【用于解决 failed Error: not found: python2 node-sass】 报错信息如下: ``` npm WARN prefer ...set SASS_BINARY_PATH=D:\nodejs\tools\node-sass\win32-x64-46_binding.node ``` 再次执行 npm install 成功

    appiumforwindows环境搭建

    下载nodejs安装包(http://nodejs.org/download/)安装测试安装是否成功:运行cmd,输入node-v安装android的sdk包,(http://developer.android.com/sdk/index.html),运行依赖sdk中的'android'工具。并确保你安装了...

    win系统下nodejs环境安装配置

    win系统下nodejs安装及环境配置,具体内容如下 第一步:下载安装文件 下载nodejs,官网:http://nodejs.org/download/,...该引导步骤会将node.exe文件安装到D:\dev\nodejs\目录下,并将该目录添加进PATH环境变量。 第

Global site tag (gtag.js) - Google Analytics