欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


开机提示输入用户名怎么办
WinXP系统怎么开启干净启动?
wifi共享精灵无法上网的原因与解决方法
爱国者X86能打电话吗?
Mac系统如何删除鼠标右键菜单的重复项目?
如何在Win2003中安全的释放内存
如何用一台电脑实现网络隔离和安全管控?
Win10系统中UserManager经常被禁用怎么解决?
解决wifi共享精灵启动失败出现5023未知错误的方法
如何在Windows8系统上设置Wifi热点(图文教程)
npm install 本地安装与全局安装的区别
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

   npm的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如

  npm install grunt # 本地安装

  npm install -g grunt-cli # 全局安装

  这两种安装方式有什么区别呢?从npm官方文档的说明来看,主要区别在于(后面通过具体的例子来说明):

  本地安装

  1. 将安装包放在 ./node_modules 下(运行npm时所在的目录)

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

  全局安装

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

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

  本地安装

  1、将安装包放在 ./node_modules 下(运行npm时所在的目录)

  比如运行下面命令

  npm install grunt --save-dev

  那么,就会在当前目录下发现一个node_modules目录,进去后能够看到grunt这个包

  casperchenMacBookPro:testUsemin casperchen$ ll

  total 200

  drwxr-xr-x 16 casperchen staff 544B 12 14 23:17 node_modules

  进入node_modules

  casperchenMacBookPro:node_modules casperchen$ ll

  total 0

  drwxr-xr-x 16 casperchen staff 544B 12 5 00:49 grunt

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

  直接来个例子,我们在项目根目录下创建test.js,里面的内容很简单

  var grunt = require('grunt');grunt.log.writeln('hello grunt');

  然后在控制台运行test.js

  node test.js

  然后就会看到如下输出

  casperchenMacBookPro:testUsemin casperchen$ node test.js

  hello grunt

  全局安装

  1、将安装包放在 /usr/local 下

  运行如下命令

  npm install -g grunt-cli

  然后进入/usr/local/bin目录,就会发现grunt-cli已经被放置在下面了

  casperchenMacBookPro:bin casperchen$ pwd

  /usr/local/bin

  casperchenMacBookPro:bin casperchen$ ll grunt

  lrwxr-xr-x 1 root admin 39B 8 18 21:43 grunt -> ../lib/node_modules/grunt-cli/bin/grunt

  可见,全局模块的真实安装路径在/usr/local/lib/node_modules/下,/usr/local/bin下的可执行文件只是软链接而已

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

  实现细节在上面其实就讲到了,通过在`/usr/local/bin下创建软链接的方式实现。这里不赘述

  更直观的例子

  下面就直接看下,当我们在项目目录下运行grunt task(task为具体的grunt任务名,自行替换)时,发生了什么事情。这里要借助node-inspector。

  首先,没接触过node-inspector的童鞋可以参考之前的文章了解下

  运行如下命令开启调试

  node-inspector &

  见到如下输出

  casperchenMacBookPro:tmp casperchen$ node-inspector &

  [1] 14390

  casperchenMacBookPro:tmp casperchen$ Node Inspector v0.6.1

  info - socket.io started

  Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

  接着,在当前任务下运行grunt任务

  ^CcasperchenMacBookPro:testUsemin casperchen$ node --debug-brk $(which grunt) dev

  debugger listening on port 5858

  接着,打开chrome浏览器,输入网址http://127.0.0.1:8080/debug?port=5858,就会自动进入断点调试状态。从一旁显示的tips可以看到,全局命令grunt其实就是/usr/local/lib/node_modules/grunt-cli/bin/grunt

npm install 本地安装与全局安装的区别 三联

  按下F8接着往下跑,就会进如Gruntfile.js,此时的grunt,是本地安装的一个node包。全局命令跟本地的包名字一样,挺有迷惑性的。

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站