Homebrew、NPM与本地项目目录相关疑问
Homebrew、NPM与本地项目目录相关疑问
嘿,这个问题其实很多刚接触前端工具链的朋友都会困惑,我来给你掰扯清楚~
首先得明确:Homebrew和NPM的定位完全不一样,它们不是互相替代的关系,而是各司其职的工具:
- Homebrew是Mac系统级的包管理器,负责给你的电脑装那些跨项目都要用的「基础工具」。比如你需要的NVM,用Homebrew装就特别方便——NVM是用来管理Node.js版本的工具,必须全局可用才能在任何项目目录里切换Node版本,总不能每个项目都装一遍NVM吧?同理,你用Homebrew装Node.js的时候,NPM也会跟着一起装,这个全局的NPM是用来管理项目依赖的「工具本身」,不是项目里的具体依赖包。
那为什么还要在本地项目里折腾NPM相关的操作呢?其实你说的“在本地项目目录安装NPM”可能有点混淆——我们通常不是在本地装NPM本身,而是用全局的NPM把项目需要的依赖包(比如你提到的Gulp)装到项目目录里,原因有这几个:
版本隔离,避免冲突
不同项目可能依赖不同版本的工具,比如A项目用Gulp 4,B老项目还在维护用Gulp 3。如果把Gulp全局装,切换项目时版本不兼容直接炸锅。本地装的话,每个项目用自己的依赖版本,互不干扰。项目可移植性更强
要是所有依赖都装全局,别人克隆你的项目后,得手动去装各种全局包,还得保证版本和你的一致,不然根本跑不起来。而本地依赖会记录在package.json里,别人只需要执行一句npm install,就能一键搞定所有依赖,项目环境完全一致。避免权限问题
全局装包有时候需要加sudo,搞不好就会乱改系统文件的权限,后期出问题排查起来头大。本地装的话,所有依赖都存在项目目录的node_modules里,权限完全可控,干净又安全。
针对你需要的三个工具,给你理清楚怎么用:
- NVM:必须用Homebrew全局装,它是管Node版本的“大管家”,全局才能发挥作用,随时切换不同项目需要的Node版本。
- NPM:随Node.js一起通过Homebrew安装,这个是全局的工具,你用它来管理项目的本地依赖,不用再单独在项目里装NPM本身。
- Gulp:强烈建议本地装到项目里,装完后在
package.json的scripts里配置执行命令,比如"gulp": "gulp",之后直接跑npm run gulp就能用,完全不用操心全局版本的问题。
备注:内容来源于stack exchange,提问作者Arnold Palmer
相关产品推荐
相关产品推荐

