Kyle Calica-St
Kyle Calica-St

Reputation: 2933

Gulp without Gulpfile.js

I have a gulp project I inherited.

I am supposed to be migrating gulp v3 to v4.

However, I cannot find a gulpfile.js in this project at all. Yet, every tutorial requires one. I am assuming there is some setup where the last developer knew about which is probably outdated?

Here is my folder structure:

enter image description here

All tasks are grouped in the Tasks folder. I want to say these exported with the root files which actually run those tasks files are my "gulpfiles".

All gulp tasks are ran using: node platform/build.js or node platform/deploy.js

I can make changes to this and everything, I see how he called it and wrote tasks. But I don't know the paradigm he is using to do this so it's difficult to know where to start migrating this to gulp v4.

Gulp libraries we are using:

"gulp": "3.9.1",
"gulp-autoprefixer": "6.0.0",
"gulp-bundle-assets": "2.29.0",
"gulp-concat": "2.6.1",
"gulp-csso": "3.0.1",
"gulp-data": "1.3.1",
"gulp-ejs": "3.3.0",
"gulp-empty": "0.1.2",
"gulp-eslint": "5.0.0",
"gulp-htmlmin": "5.0.1",
"gulp-if": "2.0.2",
"gulp-imagemin": "5.0.3",
"gulp-rename": "1.4.0",
"gulp-replace": "1.0.0",
"gulp-rimraf": "0.2.2",
"gulp-sass": "3.2.1",
"gulp-sass-lint": "1.4.0",
"gulp-sourcemaps": "2.6.5",
"gulp-string-replace": "1.1.2",
"gulp-strip-comments": "2.5.2",
"gulp-webserver": "0.9.1",

How it runs gulptasks:

// STEP 1 - process.env.NODE_ENV to staging
(!process.env.NODE_ENV) && (process.env.NODE_ENV = 'staging');


// STEP 2 - Prevent from running on NON-CI
if (!process.env.CI) {
  throw new Error('Build can only be performed in CI Environment');
}


// START PROCESS
const _ = require('lodash'),
  gulp = require('gulp'),
  Tasks = require('./tasks'),
  runSequence = require('run-sequence').use(gulp),
  // This of the tasks here is the order in which they will executed
  taskMap = {
    'clean:dist': Tasks.cleanDist,
    'clean:tmp': Tasks.cleanTemp,
    'copy:assets': Tasks.assetCopy,
    'bundle': Tasks.bundleAssets,
    'transpile': Tasks.transpile,
    'prefixCss': Tasks.autoprefixCss,
    'sitemap': Tasks.sitemap,
    'robots': Tasks.robots,
    'remove:htmlext': Tasks.removeHtmlExt
  };

// Create all tasks
_.forEach(taskMap, (value, key) => {
  gulp.task(key, value);
});

// @todo: Shift to using gulp.series when gulp is upgraded to v4
gulp.series(..._.keys(taskMap))();

Upvotes: 1

Views: 805

Answers (2)

Chris Tavares
Chris Tavares

Reputation: 30401

A gulpfile is really just a chunk of Javascript code - it's named with a default name so when you run gulp it finds it by default.

You actually have gulpfiles - they're each of those individual .js files you're talking about.

I suspect they were split up this way because somebody thought there were too many tasks in each one and wanted to separate them by "topic" somehow.

Upvotes: 1

paulcpederson
paulcpederson

Reputation: 1447

I inherited a project that used Gulp with no gulpfile a while back. It turned out it was actually inside of a shared gulpfile which was hosted on npm (like https://github.com/jonathantneal/gulp-config-dev). Long shot, but perhaps it's listed as a dependency in package.json.

Upvotes: 1

Related Questions