Content deleted Content added
No edit summary |
Stevebroshar (talk | contribs) It's a build tool; not a framework |
||
(19 intermediate revisions by 16 users not shown) | |||
Line 1:
{{Short description|Server-side JavaScript build tool}}
{{lowercase title}}
{{multiple issues|
{{How
{{context|date=January 2017}}
}}
{{Infobox
| name = gulp▼
| logo
| logo caption =
| developer = Eric Schoffstall▼
| logo alt =
| logo size = 100px
| latest release version = 4.0.2▼
| collapsible =
| latest_release_date = {{Start date and age|2019|05|06|df=yes}}<ref name="previous-releases">{{cite web | url=https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md | accessdate=2019-05-06 | title=gulp changelog}}</ref>▼
| screenshot = <!-- Image name is enough -->
| screenshot size =
| genre = [[Toolkit]]▼
| screenshot alt =
| caption =
| other_names =
▲| name = gulp
▲| developer = Blaine Bublitz, Eric Schoffstall
| released = {{Start date and age|2013|09|26|df=yes}}<ref>{{cite web | url=https://libraries.io/npm/gulp/versions | access-date=2020-12-31 | title=Release Date of Version 1.0.0}}</ref><!-- As per template guideline, this is the release date of version 1.0.0 -->
| ver layout =
| discontinued =
▲| latest_release_date = {{Start date and age|
| latest preview version =
| latest preview date =
| repo = {{URL|https://github.com/gulpjs/gulp}}
| qid =
| programming language = [[JavaScript]] <!-- Node.js is NOT a language, it is a platform -->
| middleware =
| tools =
| engine =
| operating system = [[Linux]], [[macOS]], [[Windows]] <!-- As per template guideline, do not write "Cross-platform" here -->
| platform = [[Node.js]] <!-- As per template guideline, do not write "Cross-platform" here -->
| included with =
| replaces =
| replaced_by =
| service_name =
| size =
| standard =
| language =
| language count =
| language footnote =
▲| genre = [[Toolkit]]
| license = [[MIT License]]<ref>{{cite web | url=https://github.com/gulpjs/gulp/blob/master/LICENSE | title=LICENSE file on GitHub | website=[[GitHub]] | access-date=2020-12-31}}</ref><ref>{{cite web | url=https://www.npmjs.com/package/gulp | title=License field from gulp - npm | access-date=2020-12-31}}</ref>
| website =
| AsOf =
}}
▲'''gulp''' is an [[Open-source software|open-source]] [[JavaScript]] toolkit created by Eric Schoffstall<ref name=":0">{{Cite book|title=Developing a Gulp Edge|publisher=Bleeding Edge Press|year=2014|isbn=978-1-939902-14-6|edition=1st|___location=|pages=|via=|author1=Jed Mao |author2=Maximilian Schmitt |author3=Tomasz Stryjewski |author4=Cary Country Holt |author5=William Lubelski }}</ref> used as a streaming [[build system]] (similar to a more package-focussed [[Make (software)|Make]]) in [[front-end web development]].
'''gulp''' is an [[Open-source software|open-source]] [[JavaScript]] toolkit, used as a streaming [[build system]] (similar to a more package-focused [[Make (software)|Make]]) in [[front-end web development]].
gulp uses a code-over-configuration approach to define its tasks and relies on its small, single-purpose plugins to carry them out. The gulp ecosystem includes more than 3500 such plugins.<ref>{{cite web|url=https://gulpjs.com/plugins/ |title=gulp.js plugin registry |website=Gulpjs.com |access-date=2016-12-14}}</ref>
== Overview ==
gulp<ref>{{cite web|url=https://github.com/gulpjs/gulp/blob/master/docs/FAQ.md|title=gulpjs/gulp|website=GitHub|access-date=2016-09-22}}</ref> is a build tool in JavaScript built on [[node stream]]s. These streams facilitate the connection of file operations through [[Pipeline (software)|pipelines]].<ref name="github.com">{{cite web|url=https://github.com/substack/stream-handbook |title=substack/stream-handbook: how to write node programs with streams |publisher=GitHub |access-date
== Need for a task runner ==
Task-runners like gulp and [[Grunt (software)|Grunt]] are built on Node.js rather than [[Node Package Manager|npm]]
Even though some developers prefer [[Node Package Manager|npm]] scripts because they can be simple and easy to implement, there are numerous ways where gulp and Grunt seem to have an advantage over each other, and the default provided scripts.<ref name="gulpjs/gulp">{{cite web|url=https://github.com/gulpjs/gulp/blob/master/docs/CLI.md|title=gulpjs/gulp|website=GitHub|access-date=2016-09-23}}</ref> Grunt runs tasks by transforming files and saves them as new ones in temporary folders, and the output of one task is taken as input for another and so on until the output reaches the destination folder. This involves a lot of [[I/O]] calls and the creation of many temporary files. Whereas gulp streams through the file system
== Operation ==
The gulp tasks are run from a [[command-line interface]] (CLI)<ref name="gulpjs/gulp"/> shell and require two files, <code>package.json</code>, which is used to list the various plugins for gulp, and <code>gulpfile.js</code> (or simply <code>gulpfile</code>), These, as per build tool convention, are often found in the root directory of the package's source code. The gulpfile contains most of the logic that gulp needs to run
== Anatomy of gulpfile ==
Line 45 ⟶ 77:
The tasks can then be created. A gulp task is defined by ''gulp.task'' and takes the name of the task as the first parameter and a function as the second parameter.
The following example shows the creation of a gulp tasks. The first parameter ''taskName'' is mandatory and specifies the name by which the task in the shell can be executed.<ref>{{cite web|url=https://github.com/gulpjs/gulp/blob/4.0/docs/API.md |title=gulp/API.md at 4.0 · gulpjs/gulp · GitHub |publisher=GitHub |date=2016-05-12 |
gulp.task('taskName', function () {
//do something
Line 80 ⟶ 112:
The subsequent image task optimizes images. <Code>gulp.src()</code> retrieves all the images with the extension .png, .gif or .jpg in the directory '''images-orig/'.''
<Code>.pipe(imagemin())</Code> channels the images found, through the optimization process and with <code>.pipe(gulp.dest())</code> the optimized images are saved to the '''images/' folder''. Without <code>gulp.dest()</code> the images would indeed be optimized, but are not stored.<ref>{{cite web |url=http://magazin.phlow.de/webdesign/gulp/ |title=Durchstarten mit Gulp.js – Websites optimieren, Arbeitsabläufe automatisieren |website=Magazin.phlow.de |date=2014-05-25 |
// Images task
gulp.task('images', function () {
Line 91 ⟶ 123:
=== Scripts Task ===
In the following example, all JavaScript files from the directory '''scripts/''' are optimized with <code>.pipe(uglify())</code> and <code>gulp.dest('scripts/')</code> overwrites the original files with the output.<ref>{{cite web|url=https://liechtenecker.at/front-end-workflow-mit-gulp/ |title=Front-end Workflow mit Gulp - Liechtenecker |website=Liechtenecker.at |date=2015-05-29 |
// Script task
gulp.task('scripts', function () {
Line 111 ⟶ 143:
</syntaxhighlight>
Furthermore, it is possible to accomplish an update of the browser content using the Watch-tasks.<ref>{{cite web|url=https://www.browsersync.io/docs/gulp/ |title=Browsersync + Gulp.js |website=Browsersync.io |access-date
==See also==
* [[Grunt (software)]]
* [[Browserify]]
==References==
Line 117 ⟶ 153:
==Literature==
*{{Cite book|title=Developing a Gulp Edge|publisher=Bleeding Edge Press|year=2014|isbn=978-1-939902-14-6|edition=1st
*{{Cite book| author=Den Odell | title=Pro JavaScript Development Coding, Capabilities, and Tooling | publisher=Apress |year=2014 |chapter=Build Tools and Automation |isbn=978-1-4302-6268-8}}
*{{Cite book|title=Getting Started with Gulp|last=Maynard|first=Travis|publisher=Packt Publishing Ltd|year=2015|isbn=9781784393472
== External links ==
|