-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscripts.js
More file actions
92 lines (81 loc) · 1.74 KB
/
scripts.js
File metadata and controls
92 lines (81 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
'use strict';
/**
* External dependencies
*/
import {
src,
dest,
} from 'gulp';
import newer from 'gulp-newer';
import eslint from 'gulp-eslint';
import babel from 'gulp-babel';
import { pipeline } from 'mississippi';
import gulpIf from 'gulp-if';
import rename from 'gulp-rename';
import GulpUglify from 'gulp-uglify';
/**
* Internal dependencies
*/
import {
paths,
isProd,
} from './constants';
import {
getMainConfig,
logError,
} from './utils';
import {
startStringReplace,
sourcemaps,
} from './helper/base';
/**
* Returns a single stream linting with eslint.
*
* @return {Object} Pumpify pipeline object.
*/
export const lintScripts = () => {
return pipeline.obj( [
logError( 'JavaScript' ),
newer( {
dest: paths.scripts.dest,
extra: [ paths.config.mainConfig ],
} ),
eslint(),
eslint.format(),
] );
};
/**
* Starts string replacement process for scripts.
*
* @return {NodeJS.ReadWriteStream} NodeJS Stream.
*/
export const startScriptStringReplace = () => {
return gulpIf( isProd, startStringReplace() );
};
/**
* Returns a single stream minimizing script with uglify.
*
* @return {Object} Pumpify pipeline object.
*/
export const uglifyScripts = () => {
const config = getMainConfig( isProd ),
presets = [ '@babel/preset-env' ];
return pipeline.obj( [
babel( { presets } ),
gulpIf( ! config.dev.debug.scripts, GulpUglify() ),
rename( { suffix: '.min' } ),
] );
};
/**
* Lints using Babel, ESlint, and Uglify.
*
* @return {NodeJS.ReadWriteStream} NodeJS stream.
*/
const scripts = () => {
return src( paths.scripts.src, { sourcemaps } )
.pipe( lintScripts() )
.pipe( startScriptStringReplace() )
.pipe( uglifyScripts() )
.pipe( dest( paths.scripts.dest, { sourcemaps } ) );
};
export default scripts;