首页 文章

npm,bower,gulp,Yeoman和grunt有什么好处?

提问于
浏览
28

我是一个后端开发人员,对npm,bower,gulp,grunt和Yeoman有点困惑 . 每当我问某人他们的目的是什么时,答案往往归结为依赖经理 - 对所有人而言 . 当然,我们不需要四种不同的工具来做同样的事情吗?

有人可以解释一下这些对 in as few sentences as possible 有什么好处 - 如果可能的话,每个工具只使用一个,使用五岁(具有开发技能)的语言可以理解吗?

例如:

  • SVN 存储,管理和跟踪源代码的更改

我过去曾经使用过maven,Jenkins,nexus和ant;也许您可以将上述工具与这些工具进行比较?

也可以随意添加其他前端工具到列表中 .

这是我到目前为止所发现的 - 不确定它是否正确,但是:

  • bower 前端开发/ JS库的依赖管理器使用平面依赖列表
    node.js服务器的

  • npm 依赖管理器可以解析传递依赖/依赖树

  • grunt 运行任务,非常像Jenkins,但命令行上的位置

  • Yeoman 提供脚手架,即骨架项目

  • gulp 与grunt相同,但仅以js编写

  • node.js 服务器为js应用程序?

  • git 分散的SCM / VCS,与svn / cvs相对应

我接近了吗? :)

4 回答

  • 1

    所以,既然你很清楚每个是什么,我会给你一个简单的工作流程 .

    • 我用 yeoman 来支撑一个基本的骨架 .

    • 我使用 node 作为我的应用程序的运行时 . 即 . 运行 node appname

    • 我使用 npm 来安装节点模块,以帮助我在节点中编写应用程序

    • 我可能需要来自 bower 的一些组件,比如前端库,所以使用bower来获取这些组件 .

    • 现在要做一些重复的任务,我会用grunt或gulp来编写一些任务 . 因此,每次我想重复它,比如最小化我的js文件,我称之为 grunt/gulp ,并让他们这样做 . 你问的差异,Gulp是基于流的,而grunt是基于任务的 .

    • 我使用 git 进行版本控制以跟踪更改

  • 1

    你很近!欢迎使用JavaScript :)

    让我给你一个简短的描述和大多数开发人员花一些时间的功能 .

    bower 重点关注浏览器中使用的包 . 每个 bower install <packagename> 指向一个要包含的文件(可以下载更多) . 由于webpack,browserify和babel的成功,它作为一流的依赖管理器大多已经过时了 .

    2018年更新:凉亭基本上被弃用以支持NPM

    npm 历史上专注于NodeJS代码,但已经推翻了浏览器模块的凉亭 . 不要让任何人欺骗你:NPM是巨大的 . NPM还会将许多文件加载到您的项目中,新的npm安装始终是酿造新一杯咖啡的好理由 . NPM易于使用,但由于参考版本的松散方式和模块发布的随意性,在更改环境时可能会破坏您的应用程序 . 研究Shrink Wrapnpm install --save-exact

    2018年更新:NPM长大了!很多关于安全性和可重复性的改进已经实施 .

    grunt 促进任务自动化 . Gulps年长,有点迟钝的兄弟 . JavaScript社区过去常常在2014年和他一起出去玩 . Grunt在某些地方已经被认为是遗产,但仍然有大量真正强大的自动化 . 对于更大的用例,配置可能是一场噩梦 . There is a grunt module for that though.

    2018年更新:grunt大部分已过时 . 易于编写webpack配置已经将其杀死 .

    gulp 和grunt一样但速度更快 .

    npm run-script 您可能根本不需要任务运行器 . NodeJS脚本非常容易编写,因此大多数用例允许自定义任务自动化工作流程 . 使用npm run-script从package.json文件的上下文中运行脚本

    webpack 不要错过webpack . 特别是如果你对将JavaScript编写成连贯的模块化代码的许多方法感到迷茫 . Webpack将.js文件打包成模块,并且非常出色 . Webpack具有高度可扩展性,并且提供了良好的开发环境:webpack-dev-serverbabel结合使用,以获得迄今为止最佳的JavaScript体验 .

    Yeoman 脚手架 . 对于具有不同背景的团队而言极为宝贵,因为它为您的项目架构提供了可控的共同点 . 甚至有一个scaffolding for scaffolds .

  • 6
    • Gulp vs Grunt:Gulp为任务自动化提供了更大的灵活性,Grunt内置了许多功能,符合常见的开发实践 . Grunt和Gulp有两个主要区别:

    • Grunt专注于配置,而Gulp专注于代码

    • Grunt是围绕一系列内置且常用的任务构建的,而Gulp则提出了不执行任务的想法,但是社区开发的微任务应该如何相互连接Read here


    • NodeJS:这是一个非阻塞服务器端脚本语言 . 这意味着在当前操作完成之前,操作不会阻止进一步执行 .

    • Git:正如你所提到的,它是一个SCM工具,一个广泛使用的工具 . 根据GitHub文档,它与其他SCM工具不同,因为数据永远不会被删除 .

    Git认为其数据更像是一组迷你文件系统的快照 . 每次提交或保存项目状态都在Git中时,它基本上会记录当时所有文件的外观并存储对该快照的引用 . 当您在Git中执行操作时,几乎所有操作都只将数据添加到Git数据库 . 让系统做任何不可撤销的事情或者以任何方式擦除数据是非常困难的 . 与任何VCS一样,您可能会丢失或搞乱您尚未提交的更改;但是在将快照提交到Git之后,很难丢失,特别是如果您经常将数据库推送到另一个存储库 .

    Read More


    • Bower vs NPM:Bower和NPM是依赖管理器,但Bower模块用于前端开发 . NPM是与NodeJS后端一起使用的大量模块集合 . This SO answer covers it better
  • 39

    我添加了一些细节:

    npm 是javascript的包管理器,npm是nodejs的包生态系统,但它只能用于前端项目 .

    gruntgulp 对于分离和自动化命令行上的缩小,编译,单元测试等任务非常有用,它比(例如)visual studio更轻松,因为该过程只是一个独立的(通常是轻量级的)命令行/进程 .

    关于 gulpgruntbower 之间的差异已经有了一张票:What are the differences between Grunt, Gulp.js and Bower? Why & when to use them?

    Nodejs更像是一个javascript runtime . Node.js允许使用js创建Web服务器和网络工具,以及处理各种核心功能和其他核心功能的"modules"集合 . Source

    此票证恢复Git和Subversion之间的差异:Why is Git better than Subversion?

相关问题