angularjs - Yeoman Bower 安装 vs npm 安装 vs grunt

标签 angularjs gruntjs npm yeoman bower

这是我第一次开发 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 命令,以便我清楚地了解差异并理解流程?谢谢。

最佳答案

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

grunt-font-awesome-vars 是 grunt 的模块(没有 grunt 则无用)

bower 是一个包管理器。

npm 是一个包管理器。

(我不使用 Yeoman。它是一个用于设置项目结构的脚手架工具。我不同意它关于事情应该走向何方的意见,所以我不会愚弄它。我配置了 grunt 和 Bower手动)

快速而肮脏:

使用 npm 安装节点。 然后从你的控制台(VS2013、Bash 或任何你使用的任何东西的开发者命令提示符) 运行以下命令

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

bower 不需要咕噜声。 grunt 不需要 bower 。 grunt 不需要 grunt-font-awesome-vars 但 grunt-font-awesome-vars 需要 grunt。

根据我的工作流程,我使用 npm 来管理我想通过 grunt 自动化的包依赖项。我使用 Bower 来管理客户端依赖项的版本。

更多信息:

当有人问起 Bower 和 npm 之间的区别时,我会想到“Yo, Dawg”来形容它。

"Yo, Dawg. We heard you really like packages so we installed a package manager inside your package manager."

基本上,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 系统变量指示)并可供所有节点实例使用。

编辑以回答评论中的问题

Asked: Also, why is there the need to have the install command as 'grunt-font-awesome-vars -g'

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

关于angularjs - Yeoman Bower 安装 vs npm 安装 vs grunt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24915899/

相关文章:

javascript - AngularJS - 在 HTML 中调用函数

javascript - 有没有一种简单的方法可以使 Javascript 应用程序 SEO 友好?

javascript - 错误: jslint gives me error here for bad looping

gruntjs - 为什么建议先使用 concat,然后使用 uglify,而后者可以两者兼得?

node.js - webpack 编译出错

node.js - 如何强制 npm 不创建指向本地包的符号链接(symbolic link)?

javascript - 为什么无法在部分 View 中访问我的scope.variable

macos - phantomjs 不捕获

gruntjs - grunt-contrib-copy-复制时忽略文件夹

jquery-ui - Ember 升级时的 JQueryUI