【问题标题】:Yeoman bower install vs npm install vs gruntYeoman bower install vs npm install vs grunt
【发布时间】:2014-09-14 22:58:13
【问题描述】:

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

【问题讨论】:

    标签: angularjs gruntjs npm yeoman bower


    【解决方案1】:

    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
    

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

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

    更多信息:

    当有人问起 bower 和 npm 之间的区别时,会想到一个“Yo, Dawg”来描述 bower。

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

    编辑回答来自 cmets 的问题

    问:另外,为什么需要安装命令为'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 ......他们做同样的事情)标志。

    【讨论】:

    • 感谢您的回答。您能否更详细地了解 bower.json 与 package.json 之间的区别。主要区别是,如果我通过 bower 下载,当我调用“npm install”时它不会被下载?是否有与“npm install”相同但使用 bower.json 文件的“bower install”命令?另外,为什么需要将安装命令设置为“grunt-font-awesome-vars -g”? npm 是否使用 grunt 下载包或它们是如何实现的?
    • 正确。您使用命令“bower install”从 bower.json 安装 您使用命令“npm install”从 package.json 安装。您可以使用类似 grunt-bower-install grunt 模块的方式将 bower 依赖项自动注入到 html 模板中。最后一句话是要强调 grunt 是一种自动化工具。您将模块“插入”其中并配置它们以执行您的出价。
    • 我刚刚意识到您在该评论中提出了几个问题。 “正确”进入第一个问题。第二个问题,没错。第三个问题,我会更新回答。第四个问题,我不知道答案(我知道没有专门自动驱动包管理的 grunt 模块)您可以使用 grunt-shell 模块并执行将更新的“npm-update”您所有的节点模块,但我发现自动提取新版本是不可取的。手动执行“npm-update”将允许您对依赖项执行“选择加入”更新。
    • 非常感谢。这很有帮助!
    猜你喜欢
    • 2013-12-14
    • 2021-11-11
    • 2017-06-20
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多