forked from eduardoboucas/include-media
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGulpfile.js
107 lines (83 loc) · 3 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
'use strict';
// -----------------------------------------------------------------------------
// Dependencies
// -----------------------------------------------------------------------------
var fs = require('fs');
var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();
var packageInfo = require('./package.json');
var sassdoc = require('sassdoc');
var path = require('path');
var gh = require('gh-pages');
var yaml = require('js-yaml');
// -----------------------------------------------------------------------------
// Dist
// -----------------------------------------------------------------------------
gulp.task('build', function () {
return gulp
.src([
'src/_config.scss',
'src/helpers/*.scss',
'src/plugins/*.scss',
'src/_media.scss'
])
.pipe(plugins.concat('_include-media.scss'))
.pipe(plugins.header(fs.readFileSync('./banner.txt', 'utf8')))
.pipe(plugins.header('@charset "UTF-8";\n\n'))
.pipe(plugins.replace(/@version@/, packageInfo.version))
.pipe(gulp.dest('./dist'));
});
// -----------------------------------------------------------------------------
// Tests
// -----------------------------------------------------------------------------
gulp.task('test:libsass', function () {
return gulp
.src(['./tests/*.scss'])
.pipe(plugins.sass());
});
gulp.task('test:rubysass', function () {
return plugins
.rubySass('./tests', { stopOnError: true })
.on('error', function (err) {
process.exit(1);
});
});
gulp.task('test', ['build'], function () {
gulp.start('test:libsass');
gulp.start('test:rubysass');
});
// -----------------------------------------------------------------------------
// Sass API documentation
// -----------------------------------------------------------------------------
gulp.task('sassdoc', function () {
var options = yaml.safeLoad(fs.readFileSync('.sassdocrc', 'utf-8'));
options.dest = './sassdoc/documentation';
options.verbose = true;
options.package = require('./package.json');
return gulp
.src('src/**/*.scss')
.pipe(sassdoc(options))
.resume();
});
// -----------------------------------------------------------------------------
// GH-pages task
// -----------------------------------------------------------------------------
gulp.task('gh-pages', ['build', 'sassdoc'], function () {
gh.publish(path.join(__dirname, 'sassdoc'), {
add: true,
message: 'Automatic SassDoc update from Gulp',
logger: function(message) {
console.log(message);
}
}, function(err) {
if (err) console.log(err);
});
});
// -----------------------------------------------------------------------------
// Default task
// -----------------------------------------------------------------------------
gulp.task('default', ['build', 'test']);
// -----------------------------------------------------------------------------
// Deploy documentation task
// -----------------------------------------------------------------------------
gulp.task('deploy', ['gh-pages']);