kopia lustrzana https://github.com/wagtail/wagtail
added new gulpfile directory with modularised tasks
rodzic
10894e78a8
commit
109f1d799b
|
@ -0,0 +1,64 @@
|
|||
var path = require('path');
|
||||
|
||||
var srcDir = 'static_src';
|
||||
var destDir = 'static';
|
||||
|
||||
var App = function(dir, options) {
|
||||
this.dir = dir;
|
||||
this.options = options || {};
|
||||
this.appName = this.options.appName || path.basename(dir);
|
||||
this.sourceFiles = path.join('.', this.dir, srcDir);
|
||||
};
|
||||
App.prototype = Object.create(null);
|
||||
App.prototype.scssIncludePaths = function() {
|
||||
return [this.sourceFiles];
|
||||
};
|
||||
App.prototype.scssSources = function() {
|
||||
if (!this.options.scss) return [];
|
||||
|
||||
return this.options.scss.map(function(file) {
|
||||
return path.join(this.sourceFiles, file);
|
||||
}, this);
|
||||
};
|
||||
|
||||
// All the Wagtail apps that contain static files
|
||||
var apps = [
|
||||
new App('wagtail/wagtailadmin', {
|
||||
'scss': [
|
||||
'wagtailadmin/scss/core.scss',
|
||||
'wagtailadmin/scss/layouts/login.scss',
|
||||
'wagtailadmin/scss/layouts/home.scss',
|
||||
'wagtailadmin/scss/layouts/page-editor.scss',
|
||||
'wagtailadmin/scss/layouts/preview.scss',
|
||||
'wagtailadmin/scss/panels/rich-text.scss',
|
||||
'wagtailadmin/scss/userbar.scss',
|
||||
'wagtailadmin/scss/userbar_embed.scss',
|
||||
],
|
||||
}),
|
||||
new App('wagtail/wagtaildocs'),
|
||||
new App('wagtail/wagtailembeds'),
|
||||
new App('wagtail/wagtailforms'),
|
||||
new App('wagtail/wagtailimages', {
|
||||
'scss': [
|
||||
'wagtailimages/scss/add-multiple.scss',
|
||||
'wagtailimages/scss/focal-point-chooser.scss',
|
||||
],
|
||||
}),
|
||||
new App('wagtail/wagtailsnippets'),
|
||||
new App('wagtail/wagtailusers', {
|
||||
'scss': [
|
||||
'wagtailusers/scss/groups_edit.scss',
|
||||
],
|
||||
}),
|
||||
new App('wagtail/contrib/wagtailstyleguide', {
|
||||
'scss': [
|
||||
'wagtailstyleguide/scss/styleguide.scss'
|
||||
],
|
||||
}),
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
apps: apps,
|
||||
srcDir: srcDir,
|
||||
destDir: destDir
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
var requireDir = require('require-dir');
|
||||
requireDir('./tasks', { recurse: true });
|
|
@ -0,0 +1,35 @@
|
|||
var gulp = require('gulp');
|
||||
var rename = require('gulp-rename');
|
||||
var gutil = require('gulp-util');
|
||||
var path = require('path');
|
||||
var config = require('../config');
|
||||
|
||||
/*
|
||||
* Simple copy task - just copoes files from the source to the destination,
|
||||
* with no compilation, minification, or other intelligence
|
||||
*
|
||||
*/
|
||||
|
||||
var renameSrcToDest = function() {
|
||||
return rename(function(filePath) {
|
||||
filePath.dirname = filePath.dirname.replace(
|
||||
'/' + config.srcDir + '/',
|
||||
'/' + config.destDir + '/');
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
var simpleCopyTask = function(glob) {
|
||||
return function() {
|
||||
var sources = config.apps.map(function(app) {
|
||||
return path.join(app.sourceFiles, app.appName, glob);
|
||||
});
|
||||
|
||||
return gulp.src(sources, {base: '.'})
|
||||
.pipe(renameSrcToDest())
|
||||
.pipe(gulp.dest('.'))
|
||||
.on('error', gutil.log);
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = simpleCopyTask;
|
|
@ -0,0 +1,3 @@
|
|||
var gulp = require('gulp');
|
||||
|
||||
gulp.task('build', ['styles', 'scripts', 'images', 'fonts']);
|
|
@ -0,0 +1,3 @@
|
|||
var gulp = require('gulp');
|
||||
|
||||
gulp.task('default', ['build', 'watch']);
|
|
@ -0,0 +1,4 @@
|
|||
var gulp = require('gulp');
|
||||
var simpleCopyTask = require('../lib/simplyCopy');
|
||||
|
||||
gulp.task('fonts', simpleCopyTask('fonts/**/*'));
|
|
@ -0,0 +1,4 @@
|
|||
var gulp = require('gulp');
|
||||
var simpleCopyTask = require('../lib/simplyCopy');
|
||||
|
||||
gulp.task('images', simpleCopyTask('images/**/*'));
|
|
@ -0,0 +1,4 @@
|
|||
var gulp = require('gulp');
|
||||
var simpleCopyTask = require('../lib/simplyCopy');
|
||||
|
||||
gulp.task('scripts', simpleCopyTask('js/**/*'));
|
|
@ -0,0 +1,49 @@
|
|||
var gulp = require('gulp');
|
||||
var sass = require('gulp-sass');
|
||||
var config = require('../config');
|
||||
var autoprefixer = require('gulp-autoprefixer');
|
||||
var simpleCopyTask = require('../lib/simplyCopy');
|
||||
var gutil = require('gulp-util');
|
||||
|
||||
var flatten = function(arrOfArr) {
|
||||
return arrOfArr.reduce(function(flat, more) {
|
||||
return flat.concat(more);
|
||||
}, []);
|
||||
};
|
||||
|
||||
gulp.task('styles', ['styles:sass', 'styles:css']);
|
||||
|
||||
gulp.task('styles:css', simpleCopyTask('css/**/*'));
|
||||
|
||||
gulp.task('styles:sass', function () {
|
||||
// Wagtail Sass files include each other across applications,
|
||||
// e.g. wagtailimages Sass files will include wagtailadmin/sass/mixins.scss
|
||||
// Thus, each app is used as an includePath.
|
||||
var includePaths = flatten(config.apps.map(function(app) { return app.scssIncludePaths(); }));
|
||||
|
||||
// Not all files in a directory need to be compiled, so each app defines
|
||||
// its own Sass files that need to be compiled.
|
||||
var sources = flatten(config.apps.map(function(app) { return app.scssSources(); }));
|
||||
|
||||
return gulp.src(sources)
|
||||
.pipe(sass({
|
||||
errLogToConsole: true,
|
||||
includePaths: includePaths,
|
||||
outputStyle: 'expanded'
|
||||
}))
|
||||
.pipe(autoprefixer({
|
||||
browsers: ['last 2 versions'],
|
||||
cascade: false
|
||||
}))
|
||||
.pipe(gulp.dest(function(file) {
|
||||
// e.g. wagtailadmin/scss/core.scss -> wagtailadmin/css/core.css
|
||||
// Changing the suffix is done by Sass automatically
|
||||
return file.base
|
||||
.replace(
|
||||
'/' + config.srcDir + '/',
|
||||
'/' + config.destDir + '/'
|
||||
)
|
||||
.replace('/scss/', '/css/');
|
||||
}))
|
||||
.on('error', gutil.log);
|
||||
});
|
|
@ -0,0 +1,16 @@
|
|||
var gulp = require('gulp');
|
||||
var path = require('path');
|
||||
var config = require('../config');
|
||||
|
||||
/*
|
||||
* Watch - Watch files, trigger tasks when they are modified
|
||||
*/
|
||||
gulp.task('watch', ['build'], function () {
|
||||
config.apps.forEach(function(app) {
|
||||
gulp.watch(path.join(app.sourceFiles, '*/scss/**'), ['styles:sass']);
|
||||
gulp.watch(path.join(app.sourceFiles, '*/css/**'), ['styles:css']);
|
||||
gulp.watch(path.join(app.sourceFiles, '*/js/**'), ['scripts']);
|
||||
gulp.watch(path.join(app.sourceFiles, '*/images/**'), ['images']);
|
||||
gulp.watch(path.join(app.sourceFiles, '*/fonts/**'), ['fonts']);
|
||||
});
|
||||
});
|
|
@ -19,7 +19,8 @@
|
|||
"gulp-sass": "~1.0.0",
|
||||
"gulp-sourcemaps": "~1.2.2",
|
||||
"gulp-util": "~2.2.14",
|
||||
"jscs": "^1.12.0"
|
||||
"jscs": "^1.12.0",
|
||||
"require-dir": "^0.3.0"
|
||||
},
|
||||
"dependencies": {},
|
||||
"scripts": {
|
||||
|
|
Ładowanie…
Reference in New Issue