Yeoman bower install与npm install与grunt的区别

6
这是我第一次开发AngularJS应用并使用Yeoman脚手架工具(http://yeoman.io/)。我想要在应用中使用fontawesome图标库(http://fortawesome.github.io/Font-Awesome/),我知道我应该使用以下命令:
bower install fontawesome

然而,我也看到了这篇文章 (https://www.npmjs.org/package/grunt-font-awesome-vars),它讲述了下面的npm grunt install命令。

npm install grunt-font-awesome-vars --save-dev

这些工具有什么区别呢?我还不太清楚各种工具的使用和流程如何结合。是否有任何Yeoman专家可以向我介绍何时使用bower install、npm install以及grunt命令,以便我清楚地了解它们之间的区别并理解流程?谢谢。

1个回答

14

Grunt 是一个任务自动化工具,开箱即用的功能很少。它通过插入执行特定任务的grunt模块来完成大部分工作。

grunt-font-awesome-vars 是一个用于grunt的模块(如果没有grunt,则无用)。

bower 是一个包管理器。

npm 是一个包管理器。

(我不使用Yeoman。它是一个架构工具,用于设置项目结构。我不同意它关于放置位置的看法,因此我不使用它。我手动配置grunt和bower)

快速而简单:

使用npm安装node。 然后从控制台(VS2013的开发人员命令提示符、Bash或其他你使用的工具) 运行以下命令。

npm install grunt --save
npm install bower --save
npm grunt-font-awesome-vars --save

bower不需要grunt。grunt不需要bower。grunt不需要grunt-font-awesome-vars,但grunt-font-awesome-vars需要grunt。

按照我的工作流程,我使用npm来管理要自动化的grunt包依赖项。我使用bower来管理客户端依赖项的版本。

更多信息:

当有人问它和npm之间的区别时,“Yo,Dawg”可以描述bower。

“Yo,Dawg。我们听说你真的很喜欢包,所以我们在你的包管理器中安装了一个包管理器。”

基本上,bower只是另一个包管理器。它是与npm一起安装的(这是一个单独的包管理器)

我使用npm来管理工具和服务器依赖项(如grunt、grunt模块、sass等...我潜在地想自动化的东西),并使用bower来管理功能性的客户端特定依赖项(如angular、jquery等...我潜在地想保持与当前版本的更新)

通过bower安装将利用您的bower.json。通过npm安装将利用您的package.json。

npm install grunt-font-awesome-vars --save-dev

将安装grunt-font-awesome-vars,并使用devDependency更新您的package.json(--save-dev标志可以实现此操作),以便在执行任何时候都会自动安装。

npm install

如果您将该命令更改为

npm install grunt-font-awesome-vars -g

此命令将grunt-font-awesome-vars安装到您的节点安装位置(由您的PATH系统变量指示),并可用于所有节点实例。

编辑以回答评论中的问题

问:还有,为什么需要将安装命令设置为“grunt-font-awesome-vars -g”?

grunt-font-awesome-vars是一个用于grunt的模块名称,作为node软件包部署。您可以使用“npm install”命令安装grunt模块。“-g”是一个标志,告诉npm将请求的软件包安装到全局空间,使其通过您的PATH变量可用。我当前全局安装的唯一软件包是http-server、bower和karma。如果您没有全局安装的软件包,则必须在当前工作目录执行“npm install”才能执行该软件包的命令。例如,http-server是一个node模块,像其他控制台应用程序一样在命令行上执行。在这种情况下,“http-server”命令将在任何您希望从中提供站点的地方启动本地http服务器。如果我将其安装到我的PATH,我可以从任何地方运行http-server而无需进行任何特殊操作。如果您不将其安装到PATH,则http-server可执行文件必须在要运行它的目录中。我全局安装它,这样我就永远不必再“npm install”它了。大多数您想要打包到项目中并可以使用“--save”标志而不是“-g”(或--global...它们执行相同的操作)标志完成的事情。


感谢您的回答。您能详细介绍一下bower.json和package.json之间的区别吗?主要区别是,如果我通过bower下载,那么当我调用“npm install”时,它不会被下载,这是吗?是否有一个“bower install”命令,与“npm install”相同,但使用bower.json文件?此外,“grunt-font-awesome-vars -g”命令为什么需要安装?npm是否使用grunt来下载软件包,或者它们之间有什么关系? - stcho
1
你可以使用命令“bower install”从你的bower.json文件中安装依赖包。你可以使用命令“npm install”从你的package.json文件中安装依赖包。你可以使用类似grunt-bower-install的grunt模块自动将bower依赖注入到你的html模板中。最后一句话是为了强调grunt是一个自动化工具。你可以将模块“插入”其中,并配置它们来完成你的任务。 - K. Alan Bates
1
我刚刚意识到你在那个评论中问了几个问题。 “正确”的答案是针对第一个问题。第二个问题,是正确的。第三个问题,我会更新以作回答。第四个问题,据我所知,没有grunt模块可以特别自动驱动包管理。你 可以使用grunt-shell模块并执行“npm-update”,这将更新所有节点模块,但我发现自动拉取新版本不可取。手动执行“npm-update”将允许您执行依赖项的“选择性”更新。 - K. Alan Bates
非常感谢,这对我很有帮助! - stcho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接