为啥要在全局和本地都安装 gulp?
Posted
技术标签:
【中文标题】为啥要在全局和本地都安装 gulp?【英文标题】:Why should gulp be installed both globally and locally?为什么要在全局和本地都安装 gulp? 【发布时间】:2017-06-27 11:06:13 【问题描述】:我是 npm 和 gulp 的新手。我正在 gulp 上阅读此 css-tricks tutorial。在安装 Gulp 部分中,他们全局安装了 gulp,以便它可以在计算机中的任何位置与命令行一起使用。在下一节创建 Gulp 项目中,他们再次在本地安装了 gulp
。
我不明白的是,如果 gulp 已经在全球范围内安装并且我们可以在任何地方使用它,那么为什么要安装 gulp 两次?为什么不将gulpfile.js
与其他package.json
文件放在一起?
【问题讨论】:
【参考方案1】:您甚至不需要安装gulp
globaly。只需将它放在本地并将 gulp 命令放入 package.json 脚本中,如下所示:
"scripts":
"start": "gulp",
"speed-test": "gulp speed-test -v",
"build-prod": "gulp build-prod",
"test": "NODE_ENV=test jasmine JASMINE_CONFIG_PATH=spec/support/jasmine.json"
,
比从事同一个项目的每个人都可以npm install
并开始运行命令,甚至无需全局安装 gulp。
npm start
将运行 gulp
npm run speed-test
将运行 gulp speed-test -v
npm run build-prod
将运行 gulp build-prod
当然,您可以在其中添加任意数量的命令。如果团队中的某个人拥有或想要在全球范围内拥有gulp
,那么他们可以直接从终端运行gulp
命令。
【讨论】:
谢谢,这似乎是一个有用的技术【参考方案2】:您在终端中使用简单的gulp
命令全局安装gulp
,并在本地安装gulp
(带有package.json
依赖项)以免丢失依赖项,因为您可以将项目安装到任何计算机上,致电npm i
并使用./node_modules/.bin/gulp
访问gulp
,无需任何额外安装
【讨论】:
@user31782 是的,npm i
是 npm install
的短版
npm i
给了我以下错误:H:\C\BRQX\Transports\index1>npm i npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.17: wanted "os":"darwin","arch":"any" (current: "os":"win32","arch":"x64")
另外,如果我将我的项目安装到另一台计算机上,那么 node_modules 文件夹也将被复制。在该文件夹中 gulp 已经存在,因此其他计算机不需要全局安装 gulp。
@user31782 你应该在.gitignore
文件中添加node_modules
并在你的SVN 中推送这个文件夹。当有人从 SVN 克隆您的项目时,他只需运行 npm install
并从 npm 获取所有依赖项。您可以阅读这篇文章以了解为什么要这样做:quora.com/Should-I-put-node_modules-in-gitignore
如果我将 node_modules 文件夹放在 gitignore 文件中,那么如果有人克隆存储库,他将不会下载 node_modules 但他仍然会下载 package.json
file 已经在我的项目中的许多其他依赖项中提到的 package.json
file .现在我假设新开发人员仍会在本地安装这些依赖项,因为他不想安装 10 - 50 个全局依赖项。现在又为什么他要在全局和本地安装 gulp?以上是关于为啥要在全局和本地都安装 gulp?的主要内容,如果未能解决你的问题,请参考以下文章