Passed
Push — develop ( 3b1736...62d6da )
by Paul
03:12
created

gulpfile.js (3 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
var args            = require('yargs').argv;
2
var autoprefixer    = require('gulp-autoprefixer');
3
var babel           = require('gulp-babel');
4
var bump            = require('gulp-bump');
5
var checktextdomain = require('gulp-checktextdomain');
6
var concat          = require('gulp-concat');
7
var cssnano         = require('gulp-cssnano');
8
var gulp            = require('gulp');
9
var gulpif          = require('gulp-if');
10
var jshint          = require('gulp-jshint');
11
var mergeStream     = require('merge-stream');
12
var plumber         = require('gulp-plumber');
13
var potomo          = require('gulp-potomo');
14
var pseudo          = require('gulp-pseudo-i18n');
15
var rename          = require('gulp-rename');
16
var runSequence     = require('run-sequence');
17
var sass            = require('gulp-sass');
18
var sort            = require('gulp-sort');
19
var uglify          = require('gulp-uglify');
20
var wpPot           = require('gulp-wp-pot');
21
var yaml            = require('yamljs');
22
23
var config = yaml.load('+/config.yml');
24
25
/* JSHint Task
26
 -------------------------------------------------- */
27
gulp.task('jshint', function() {
28
  return gulp.src(config.watch.js)
29
  .pipe(plumber({
30
    errorHandler: function(error) {
31
    console.log(error.message);
32
    this.emit('end');
33
  }}))
34
  .pipe(jshint())
35
  .pipe(jshint.reporter('jshint-stylish'))
36
});
37
38
/* JS Task
39
 -------------------------------------------------- */
40
gulp.task('js', function() {
41
  var streams = mergeStream();
42
  for(var key in config.scripts) {
1 ignored issue
show
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
43
    streams.add(gulp.src(config.scripts[key]).pipe(concat(key)));
44
  }
45
  return streams
46
  .pipe(plumber({
47
    errorHandler: function(error) {
48
    console.log(error.message);
49
    this.emit('end');
50
  }}))
51
  // .pipe(babel({
52
  //   presets: ["env"]
53
  // }))
54
  .pipe(gulpif(args.production, uglify({
55
    preserveComments: 'license',
56
  })))
57
  .pipe(gulp.dest(config.dest.js))
58
});
59
60
/* CSS Task
61
 -------------------------------------------------- */
62
gulp.task('css', function() {
63
  var streams = mergeStream();
64
  for(var key in config.styles) {
1 ignored issue
show
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
65
    streams.add(gulp.src(config.styles[key]).pipe(concat(key)));
66
  }
67
  return streams
68
  .pipe(plumber({
69
    errorHandler: function(error) {
70
    console.log(error.message);
1 ignored issue
show
console.log looks like debug code. Are you sure you do not want to remove it?
Loading history...
71
    this.emit('end');
72
  }}))
73
  .pipe(gulpif(args.production, cssnano()))
74
  .pipe(gulp.dest(config.dest.css))
75
});
76
77
/* SCSS Task
78
 -------------------------------------------------- */
79
gulp.task('scss', function() {
80
  return gulp.src(config.watch.scss)
81
  .pipe(plumber({
82
    errorHandler: function(error) {
83
    console.log(error.message);
84
    this.emit('end');
85
  }}))
86
  .pipe(sass({
87
    outputStyle: 'expanded',
88
  }))
89
  .pipe(autoprefixer('last 2 versions'))
90
  .pipe(gulpif(args.production, cssnano({
91
    minifyFontValues: false,
92
    discardComments: { removeAll: true }
93
  })))
94
  .pipe(gulp.dest(config.dest.css))
95
});
96
97
/* Language Tasks
98
 -------------------------------------------------- */
99
gulp.task('languages', function() {
100
  return runSequence('po', 'mo')
101
});
102
103
gulp.task('po', function() {
104
  return gulp.src(config.watch.php)
105
  .pipe(checktextdomain({
106
    text_domain: config.language.domain,
107
    keywords: [
108
      '__:1,2d',
109
      '_e:1,2d',
110
      '_x:1,2c,3d',
111
      'esc_html__:1,2d',
112
      'esc_html_e:1,2d',
113
      'esc_html_x:1,2c,3d',
114
      'esc_attr__:1,2d',
115
      'esc_attr_e:1,2d',
116
      'esc_attr_x:1,2c,3d',
117
      '_ex:1,2c,3d',
118
      '_n:1,2,4d',
119
      '_nx:1,2,4c,5d',
120
      '_n_noop:1,2,3d',
121
      '_nx_noop:1,2,3c,4d',
122
    ],
123
  }))
124
  .pipe(sort())
125
  .pipe(wpPot({
126
    domain: config.language.domain,
127
    lastTranslator: config.language.translator,
128
    team: config.language.team,
129
  }))
130
  .pipe(pseudo({
131
    // language: 'en_US',
132
    charMap: {},
133
  }))
134
  .pipe(rename(config.language.domain + '-en_US.po'))
135
  .pipe(gulp.dest(config.dest.lang));
136
});
137
138
gulp.task('mo', function() {
139
  return gulp.src(config.dest.lang + '*.po')
140
  .pipe(potomo())
141
  .pipe(gulp.dest(config.dest.lang));
142
});
143
144
/* Version Task
145
 -------------------------------------------------- */
146
gulp.task('bump', function() {
147
  return gulp.src(config.primary_file)
148
  .pipe(gulpif(args.patch || Object.keys(args).length < 3, bump({
149
    type: 'patch'
150
  })))
151
  .pipe(gulpif(args.minor, bump({
152
    type: 'minor'
153
  })))
154
  .pipe(gulpif(args.major, bump({
155
    type: 'major'
156
  })))
157
  .pipe(gulp.dest('.'))
158
});
159
160
/* Watch Task
161
 -------------------------------------------------- */
162
gulp.task('watch', function() {
163
  gulp.watch(config.watch.js, ['jshint', 'js']);
164
  gulp.watch(config.watch.scss, ['scss']);
165
});
166
167
/* Default Task
168
 -------------------------------------------------- */
169
gulp.task('default', function() {
170
  gulp.start('css', 'scss', 'jshint', 'js')
171
});
172
173
/* Build Task
174
 -------------------------------------------------- */
175
gulp.task('build', function() {
176
  gulp.start('css', 'scss', 'jshint', 'js', 'languages')
177
});
178