What is gulp-concat?
The gulp-concat npm package is a plugin for Gulp, a streaming build system. It is used to concatenate multiple files into a single file, which is useful for tasks like combining multiple JavaScript or CSS files into one to reduce the number of HTTP requests and improve web performance.
What are gulp-concat's main functionalities?
Concatenate JavaScript files
This feature allows you to concatenate multiple JavaScript files into a single file named 'all.js'. The source files are located in the 'src/js/' directory, and the concatenated file is saved in the 'dist/js/' directory.
const gulp = require('gulp');
const concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src('src/js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('dist/js'));
});
Concatenate CSS files
This feature allows you to concatenate multiple CSS files into a single file named 'all.css'. The source files are located in the 'src/css/' directory, and the concatenated file is saved in the 'dist/css/' directory.
const gulp = require('gulp');
const concat = require('gulp-concat');
gulp.task('styles', function() {
return gulp.src('src/css/*.css')
.pipe(concat('all.css'))
.pipe(gulp.dest('dist/css'));
});
Concatenate with custom separator
This feature allows you to concatenate files with a custom separator. In this example, a semicolon (';') is used as the separator between concatenated JavaScript files.
const gulp = require('gulp');
const concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src('src/js/*.js')
.pipe(concat({ path: 'all.js', newLine: ';' }))
.pipe(gulp.dest('dist/js'));
});
Other packages similar to gulp-concat
gulp-uglify
gulp-uglify is a Gulp plugin used to minify JavaScript files. While it does not concatenate files, it is often used in conjunction with gulp-concat to first concatenate and then minify the resulting file.
gulp-cssnano
gulp-cssnano is a Gulp plugin used to minify CSS files. Similar to gulp-uglify, it does not concatenate files but is often used alongside gulp-concat to first concatenate and then minify CSS files.
gulp-htmlmin
gulp-htmlmin is a Gulp plugin used to minify HTML files. While it does not provide concatenation functionality, it is useful for reducing the size of HTML files after they have been processed.
Installation
Install package with NPM and add it to your development dependencies:
npm install --save-dev gulp-concat
Information
Package | gulp-concat |
Description | Concatenates files |
Node Version | >= 0.10 |
Usage
var concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src('./lib/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist/'));
});
This will concat files by your operating systems newLine. It will take the base directory from the first file that passes through it.
Files will be concatenated in the order that they are specified in the gulp.src
function. For example, to concat ./lib/file3.js
, ./lib/file1.js
and ./lib/file2.js
in that order, the following code will create a task to do that:
var concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])
.pipe(concat('all.js'))
.pipe(gulp.dest('./dist/'));
});
To change the newLine simply pass an object as the second argument to concat with newLine being whatever (\r\n if you want to support any OS to look at it)
For instance:
.pipe(concat('main.js', {newLine: ';'}))
To specify cwd
, path
and other vinyl properties, gulp-concat accepts Object
as first argument:
var concat = require('gulp-concat');
gulp.task('scripts', function() {
return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])
.pipe(concat({ path: 'new.js', stat: { mode: 0666 }}))
.pipe(gulp.dest('./dist'));
});
This will concat files into ./dist/new.js
.
Source maps
Source maps can be generated by using gulp-sourcemaps:
var gulp = require('gulp');
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('javascript', function() {
return gulp.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(concat('all.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist'));
});