-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
114 lines (98 loc) · 3.32 KB
/
gulpfile.js
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
'use strict';
const { src, dest, watch } = require( 'gulp' );
const _sass = require( 'gulp-sass' );
const _webpack = require('webpack-stream');
const _csslint = require( 'gulp-csslint' );
const _eslint = require( 'gulp-eslint' );
const _named = require('vinyl-named');
function cssLint(){
return src( [ 'src/css/*.css' ] )
.pipe( _csslint())
.pipe( _csslint.formatter());
}
function cssCompile(){
return src( ['src/css/admin/admin.scss', 'src/css/editor/editor.scss', 'src/css/utils/view.scss' ], { sourcemaps: true })
.pipe( _sass.sync( { outputStyle: 'compressed' } ).on( 'error', _sass.logError ) )
.pipe( dest( 'src/css/' ), { sourcemaps: '.' } );
}
function cssWatch(){
watch( 'src/css/**/*.scss', { ignoreInitial: false }, cssCompile );
}
function jsLint(){
return src( [ 'src/js/**/*.js', '!src/js/*js', '!src/js/utils/viewport.js', '!src/js/utils/ui/viewport.js', '!src/js/utils/book.js' ] )
.pipe( _eslint({
'env': {
'browser': true,
},
'parserOptions': {
'ecmaVersion': 6,
'sourceType': 'module',
'ecmaFeatures': {
'jsx': true
}
},
'rules': {
'eqeqeq': 'warn',
'vars-on-top': 'error',
'quotes': [ 'warn', 'single' ],
'semi': [ 'error', 'always'],
'no-extra-semi': 'error',
'semi-spacing': 'warn',
'strict': 'warn',
'no-use-before-define': 'off',
'no-console': 'warn',
'no-new-func': 'warn',
'no-new-wrappers': 'error',
'no-func-assign': 'error',
'no-shadow': [ 'error', { 'builtinGlobals': true, 'hoist': 'all' } ],
'no-useless-escape': 'error',
'no-useless-return': 'error',
'yoda': 'error',
'no-new-object': 'error',
'no-invalid-regexp': 'error',
'no-dupe-keys': 'error',
'no-duplicate-case': 'error',
'no-empty': 'error',
'no-invalid-regexp': 'error',
'no-empty-function': 'error',
'no-fallthrough': 'error',
'no-redeclare': 'error',
'no-delete-var': 'error',
'no-label-var': 'error',
'no-undef': 'error',
'no-unused-vars': 'error',
'no-self-assign': 'error',
'no-octal': 'error',
'valid-typeof': [ 'error', { 'requireStringLiterals': true } ],
'no-unreachable': 'error',
'no-unexpected-multiline': 'error',
'no-sparse-arrays': 'error',
'no-regex-spaces': 'error',
'no-control-regex': 'error',
'no-obj-calls': 'error',
'no-inner-declarations': 'warn',
}
}))
.pipe( _eslint.format())
//.pipe(eslint.failOnError());
}
function jsCompile(){
return src( [ 'src/js/editor/editor.js', 'src/js/utils/view.js', 'src/js/admin/admin.js' ] )
.pipe( _named() )
.pipe( _webpack( {
//watch: true,
target: 'web',
mode: 'production',/*'development',*/
devtool: 'source-map',
} ) )
.pipe( dest( 'src/js/' ) );
}
function jsWatch(){
watch( 'src/js/**/*.js', { ignoreInitial: false }, jsCompile );
}
module.exports = {
css: cssWatch,
js: jsWatch,
lcss: cssLint,
ljs: jsLint
};