npm,bower,gulp,Yeoman和grunt有什么好处?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm,bower,gulp,Yeoman和grunt有什么好处?相关的知识,希望对你有一定的参考价值。
我是一个后端开发人员,对npm,bower,gulp,grunt和Yeoman有点困惑。每当我问某人他们的目的是什么时,答案往往归结为依赖经理 - 对所有人而言。当然,我们不需要四种不同的工具,它们都是一样的吗?
有人可以用尽可能少的句子来解释每个有益的东西 - 如果可能的话,每个工具只使用一个,使用五岁的语言(具有开发技能)可以理解吗?
例如:
- SVN存储,管理和跟踪源代码的变化
我过去曾经使用过maven,Jenkins,nexus和ant;也许您可以将上述工具与这些工具进行比较?
也可以随意添加其他前端工具到列表中。
这是我到目前为止所发现的 - 不确定它是否正确,但是:
- 前端开发/ JS库的bower依赖管理器使用平面依赖列表
- node.js服务器的npm依赖管理器可以解析传递依赖/依赖树
- grunt运行任务,就像Jenkins一样,但是命令行上的位置
- Yeoman提供了脚手架,即骨架项目
- gulp与grunt相同,但仅用js编写
- js应用程序的node.js服务器?
- git分散的SCM / VCS,与svn / cvs相对应
我接近了吗? :)
你很近!欢迎使用javascript :)
让我给你一个简短的描述和大多数开发人员花一些时间的功能。
bower重点关注浏览器中使用的包。每个bower install <packagename>
指向一个要包含的文件(更多可以下载)。由于webpack,browserify和babel的成功,它作为一流的依赖管理器大多已经过时了。
2018年更新:凉亭基本上被弃用,以支持NPM
npm历史上专注于NodeJS代码,但已经推翻了浏览器模块的bower。不要让任何人欺骗你:NPM是巨大的。 NPM还会将许多文件加载到您的项目中,新的npm安装始终是酿造新咖啡的好理由。 NPM易于使用,但由于参考版本的松散方式和模块发布的随意性,在更改环境时可能会破坏您的应用程序。研究Shrink Wrap和npm 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-server与babel结合使用,可获得迄今为止最佳的JavaScript体验。
Yeoman脚手架。对于具有不同背景的团队而言极为宝贵,因为它为您的项目架构提供了可控的共同点。甚至有一个scaffolding for scaffolds。
所以,既然你很清楚每个是什么,我会给你一个简单的工作流程。
- 我用自耕农来支撑一个基本的骨架。
- 我使用node作为我的应用程序的运行时。即。运行
node appname
- 我使用npm来安装节点模块,以帮助我在节点中编写应用程序
- 我可能需要像bower这样的前端库中的一些组件,所以使用bower来获取这些组件。
- 现在要做一些重复性的任务,我将使用grunt或gulp来编写一些任务。因此每次我想重复它,比如说最小化我的js文件,我称之为grunt / gulp并让它们去做。你问的差异,Gulp是基于流的,而grunt是基于任务的。
- 我使用git进行版本控制以跟踪更改
- 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
我添加了一些细节:
npm是javascript的包管理器,npm是nodejs的包生态系统,但它只能用于前端项目。
grunt&gulp对于分离和自动化命令行上的缩小,编译,单元测试等任务非常有用,它比(例如)visual studio更轻松,因为该过程只是一个独立的(通常是轻量级的)命令行/进程。
关于gulp,grunt和bower之间的区别,已经有一张票:What are the differences between Grunt, Gulp.js and Bower? Why & when to use them?
Nodejs更像是一个javascript运行时。 Node.js允许使用js和一组处理各种核心功能和其他核心功能的“模块”来创建Web服务器和网络工具。 Source
这张票恢复了Git和Subversion之间的差异:Why is Git better than Subversion?
以上是关于npm,bower,gulp,Yeoman和grunt有什么好处?的主要内容,如果未能解决你的问题,请参考以下文章
json Gulp和Libsass首发。 1. npm安装2. bower安装
使用 Bower 安装 Gulp-Sass 时出现 ENOTFound 错误
NPM vs. Bower vs. Browserify vs. Gulp vs. Grunt vs. Webpack [关闭]