npm、bower、gulp、Yeoman 和 grunt 有什么用?
What are npm, bower, gulp, Yeoman, and grunt good for?
我是后端开发人员,对 npm、bower、gulp、grunt 和 Yeoman 有点困惑。每当我问某人他们的目的是什么时,答案往往归结为依赖管理器——对他们所有人来说。当然,我们不需要四种功能相同的不同工具?
有人可以用尽可能少的句子解释这些工具中的每一个的好处吗 - 如果可能的话每个工具一个,使用五岁的语言(具有开发技能) ) 能看懂吗?
例如:
- SVN 存储、管理和跟踪对我们源代码的更改
我以前用过maven、Jenkins、nexus和ant;也许您可以将上述工具与这些工具进行比较?
也可以随意将其他前端工具添加到列表中。
这是我目前的发现 - 不过不确定它是否正确:
- bower 前端 development/JS 库的依赖管理器,使用平面依赖列表
- npm node.js 服务器的依赖管理器,可以解析可传递的 dependencies/dependency 树
- grunt 运行任务,很像 Jenkins,但在命令行上是本地化的
- Yeoman 提供脚手架,即骨架项目
- gulp 和grunt一样,只是用js写的
- node.js js 应用服务器?
- git 去中心化 SCM/VCS,对应 svn/cvs
我接近了吗? :)
所以,既然你很清楚每个是什么,我会给你一个简单的工作流程。
- 我使用 yeoman 搭建基本骨架。
- 我正在使用 node 作为我申请的 运行time。 IE。 运行
node appname
- 我使用 npm 安装节点模块以帮助我在节点中编写应用程序
- 我可能需要来自 bower 的一些组件,比如前端库,所以使用 bower 来获取这些组件。
- 现在要完成一些重复性任务,我将使用 g运行t 或 gulp 来编写一些任务。所以每次我想重复它时,说最小化我调用 grunt/gulp 的 js 文件并让他们这样做。你问的不同,Gulp 是基于流的,而 g运行t 是基于任务的。
- 我使用 git 进行版本控制以跟踪更改
Gulp vs Grunt:Gulp 提供了更多的任务自动化灵活性,Grunt 内置了很多按照常见开发实践的功能。 Grunt 和 Gulp 主要有两个区别:
- Grunt 专注于配置,而 Gulp 专注于代码
- Grunt 是围绕一组内置的、常用的任务构建的,而 Gulp 的想法是什么都不强制执行,但社区开发的微任务应该如何相互连接 Read here
- NodeJS:它是一种非阻塞的服务器端脚本语言。这意味着在当前操作完成之前,操作不会阻止进一步执行。
Git:你说的是单片机工具,应用广泛。根据 GitHub 文档,它与其他 SCM 工具不同,因为数据永远不会被删除。
Git thinks of its data more like a set of snapshots of a mini filesystem. Every time you commit, or save the state of your project in Git, it basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot.
When you do actions in Git, nearly all of them only add data to the Git database. It is very difficult to get the system to do anything that is not undoable or to make it erase data in any way. As in any VCS, you can lose or mess up changes you haven’t committed yet; but after you commit a snapshot into Git, it is very difficult to lose, especially if you regularly push your database to another repository.
- Bower vs NPM:Bower 和 NPM 是依赖项管理器,但 Bower 模块用于前端开发。 NPM 是与 NodeJS 后端一起使用的大量模块集合。 This SO answer covers it better
我添加了一些细节:
npm是javascript的包管理器,npm是nodejs的包生态系统,但只能用于前端项目
grunt & gulp 可用于分离和自动化任务,如命令行上的缩小、编译、单元测试,这是一种比(例如)visual studio 更轻的解决方案,因为该过程只是一个单独的(通常是轻量级的)命令 line/process.
关于gulp、grunt和bower之间的区别有已经有一张票:
Nodejs 更像是一个 javascript 运行时 。 Node.js 允许使用 js 和处理各种核心功能和其他核心功能的集合 "modules" 创建 Web 服务器和网络工具。 Source
这张票恢复了Git和Subversion之间的区别:Why is Git better than Subversion?
你很接近!
欢迎来到 JavaScript :)
让我给你一个简短的描述和一个大多数开发人员花时间使用的功能。
凉亭
专注于浏览器中使用的包。每个 bower install <packagename>
恰好指向一个要包含的文件(可以下载更多)。由于 webpack、browserify 和 babel 的成功,它作为第一个 class 依赖管理器几乎已经过时了。
2018 年更新:Bower 大部分已弃用,取而代之的是 NPM
npm
历史上专注于 NodeJS 代码,但已经为浏览器模块推翻了 bower。不要让任何人愚弄您:NPM 非常庞大。 NPM 还会将许多文件加载到您的项目中,并且全新的 npm 安装始终是冲泡一杯新咖啡的好理由。 NPM 易于使用,但由于引用版本的松散方式和模块发布的任意性,在更改环境时可能会破坏您的应用程序。研究 Shrink Wrap 和 npm install --save-exact
2018年更新:NPM长大了!已经实施了许多关于安全性和可重复性的改进。
g运行t
促进任务自动化。大口大口地吞咽着更迟钝的哥哥。 JavaScript 社区在 2014 年经常和他一起出去玩。 G运行t 在某些地方已经被认为是遗留的,但仍然有大量真正强大的自动化有待发现。对于更大的用例,配置可能是一场噩梦。 There is a grunt module for that though.
2018 更新:g运行t 大部分已过时。好写的webpack配置秒杀了
gulp
与 g运行t 做同样的事情,但速度更快。
npm 运行-script
您可能根本不需要任务 运行 人员。 NodeJS 脚本非常容易编写,因此大多数用例都允许自定义任务自动化工作流程。使用 npm run-script
来自 package.json 文件上下文的 运行 脚本
webpack
不要错过 webpack。尤其是当您对将 JavaScript 编写成连贯的模块化代码的多种方法感到迷茫时。 Webpack 将 .js 文件打包成模块并且做得非常出色。 Webpack 具有高度可扩展性,也提供了良好的开发环境:webpack-dev-server
与 babel 结合使用以获得迄今为止最好的 JavaScript 体验。
约曼
脚手架。对于具有不同背景的团队来说非常有价值,因为它为您的项目架构提供了一个可控的共同点。甚至还有一个scaffolding for scaffolds.
我是后端开发人员,对 npm、bower、gulp、grunt 和 Yeoman 有点困惑。每当我问某人他们的目的是什么时,答案往往归结为依赖管理器——对他们所有人来说。当然,我们不需要四种功能相同的不同工具?
有人可以用尽可能少的句子解释这些工具中的每一个的好处吗 - 如果可能的话每个工具一个,使用五岁的语言(具有开发技能) ) 能看懂吗?
例如:
- SVN 存储、管理和跟踪对我们源代码的更改
我以前用过maven、Jenkins、nexus和ant;也许您可以将上述工具与这些工具进行比较?
也可以随意将其他前端工具添加到列表中。
这是我目前的发现 - 不过不确定它是否正确:
- bower 前端 development/JS 库的依赖管理器,使用平面依赖列表
- npm node.js 服务器的依赖管理器,可以解析可传递的 dependencies/dependency 树
- grunt 运行任务,很像 Jenkins,但在命令行上是本地化的
- Yeoman 提供脚手架,即骨架项目
- gulp 和grunt一样,只是用js写的
- node.js js 应用服务器?
- git 去中心化 SCM/VCS,对应 svn/cvs
我接近了吗? :)
所以,既然你很清楚每个是什么,我会给你一个简单的工作流程。
- 我使用 yeoman 搭建基本骨架。
- 我正在使用 node 作为我申请的 运行time。 IE。 运行
node appname
- 我使用 npm 安装节点模块以帮助我在节点中编写应用程序
- 我可能需要来自 bower 的一些组件,比如前端库,所以使用 bower 来获取这些组件。
- 现在要完成一些重复性任务,我将使用 g运行t 或 gulp 来编写一些任务。所以每次我想重复它时,说最小化我调用 grunt/gulp 的 js 文件并让他们这样做。你问的不同,Gulp 是基于流的,而 g运行t 是基于任务的。
- 我使用 git 进行版本控制以跟踪更改
Gulp vs Grunt:Gulp 提供了更多的任务自动化灵活性,Grunt 内置了很多按照常见开发实践的功能。 Grunt 和 Gulp 主要有两个区别:
- Grunt 专注于配置,而 Gulp 专注于代码
- Grunt 是围绕一组内置的、常用的任务构建的,而 Gulp 的想法是什么都不强制执行,但社区开发的微任务应该如何相互连接 Read here
- NodeJS:它是一种非阻塞的服务器端脚本语言。这意味着在当前操作完成之前,操作不会阻止进一步执行。
Git:你说的是单片机工具,应用广泛。根据 GitHub 文档,它与其他 SCM 工具不同,因为数据永远不会被删除。
Git thinks of its data more like a set of snapshots of a mini filesystem. Every time you commit, or save the state of your project in Git, it basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot.
When you do actions in Git, nearly all of them only add data to the Git database. It is very difficult to get the system to do anything that is not undoable or to make it erase data in any way. As in any VCS, you can lose or mess up changes you haven’t committed yet; but after you commit a snapshot into Git, it is very difficult to lose, especially if you regularly push your database to another repository.
- Bower vs NPM:Bower 和 NPM 是依赖项管理器,但 Bower 模块用于前端开发。 NPM 是与 NodeJS 后端一起使用的大量模块集合。 This SO answer covers it better
我添加了一些细节:
npm是javascript的包管理器,npm是nodejs的包生态系统,但只能用于前端项目
grunt & gulp 可用于分离和自动化任务,如命令行上的缩小、编译、单元测试,这是一种比(例如)visual studio 更轻的解决方案,因为该过程只是一个单独的(通常是轻量级的)命令 line/process.
关于gulp、grunt和bower之间的区别有已经有一张票:
Nodejs 更像是一个 javascript 运行时 。 Node.js 允许使用 js 和处理各种核心功能和其他核心功能的集合 "modules" 创建 Web 服务器和网络工具。 Source
这张票恢复了Git和Subversion之间的区别:Why is Git better than Subversion?
你很接近! 欢迎来到 JavaScript :)
让我给你一个简短的描述和一个大多数开发人员花时间使用的功能。
凉亭
专注于浏览器中使用的包。每个 bower install <packagename>
恰好指向一个要包含的文件(可以下载更多)。由于 webpack、browserify 和 babel 的成功,它作为第一个 class 依赖管理器几乎已经过时了。
2018 年更新:Bower 大部分已弃用,取而代之的是 NPM
npm
历史上专注于 NodeJS 代码,但已经为浏览器模块推翻了 bower。不要让任何人愚弄您:NPM 非常庞大。 NPM 还会将许多文件加载到您的项目中,并且全新的 npm 安装始终是冲泡一杯新咖啡的好理由。 NPM 易于使用,但由于引用版本的松散方式和模块发布的任意性,在更改环境时可能会破坏您的应用程序。研究 Shrink Wrap 和 npm install --save-exact
2018年更新:NPM长大了!已经实施了许多关于安全性和可重复性的改进。
g运行t 促进任务自动化。大口大口地吞咽着更迟钝的哥哥。 JavaScript 社区在 2014 年经常和他一起出去玩。 G运行t 在某些地方已经被认为是遗留的,但仍然有大量真正强大的自动化有待发现。对于更大的用例,配置可能是一场噩梦。 There is a grunt module for that though.
2018 更新:g运行t 大部分已过时。好写的webpack配置秒杀了
gulp 与 g运行t 做同样的事情,但速度更快。
npm 运行-script 您可能根本不需要任务 运行 人员。 NodeJS 脚本非常容易编写,因此大多数用例都允许自定义任务自动化工作流程。使用 npm run-script
来自 package.json 文件上下文的 运行 脚本webpack 不要错过 webpack。尤其是当您对将 JavaScript 编写成连贯的模块化代码的多种方法感到迷茫时。 Webpack 将 .js 文件打包成模块并且做得非常出色。 Webpack 具有高度可扩展性,也提供了良好的开发环境:webpack-dev-server 与 babel 结合使用以获得迄今为止最好的 JavaScript 体验。
约曼 脚手架。对于具有不同背景的团队来说非常有价值,因为它为您的项目架构提供了一个可控的共同点。甚至还有一个scaffolding for scaffolds.