blessing-skin-server/gulpfile.js

182 lines
5.6 KiB
JavaScript
Raw Normal View History

2016-07-21 22:01:57 +08:00
/*
2017-01-18 23:05:32 +08:00
* @Author: printempw
2016-07-21 22:01:57 +08:00
* @Date: 2016-07-21 13:38:26
2016-07-22 08:54:50 +08:00
* @Last Modified by: printempw
* @Last Modified time: 2017-01-19 23:07:05
2016-07-21 22:01:57 +08:00
*/
2017-01-18 23:05:32 +08:00
'use strict';
var gulp = require('gulp'),
babel = require('gulp-babel'),
2016-08-28 11:49:22 +08:00
elixir = require('laravel-elixir'),
2016-07-22 08:54:50 +08:00
uglify = require('gulp-uglify'),
2016-08-28 11:49:22 +08:00
sass = require('gulp-sass'),
2016-07-22 08:54:50 +08:00
cleanCss = require('gulp-clean-css'),
2016-08-28 18:34:41 +08:00
del = require('del'),
zip = require('gulp-zip'),
notify = require('gulp-notify');
2016-07-23 16:24:44 +08:00
2016-08-28 11:49:22 +08:00
require('laravel-elixir-replace');
2016-08-28 10:05:21 +08:00
2017-01-18 23:05:32 +08:00
let version = require('./package.json').version;
2016-07-21 22:01:57 +08:00
let vendorJs = [
2016-09-25 09:00:40 +08:00
'jquery/dist/jquery.min.js',
'bootstrap/dist/js/bootstrap.min.js',
'AdminLTE/dist/js/app.min.js',
'bootstrap-fileinput/js/fileinput.min.js',
'AdminLTE/plugins/datatables/jquery.dataTables.min.js',
'AdminLTE/plugins/datatables/dataTables.bootstrap.min.js',
2016-09-25 09:00:40 +08:00
'iCheck/icheck.min.js',
'toastr/toastr.min.js',
'es6-promise/es6-promise.auto.min.js',
2016-09-25 09:00:40 +08:00
'sweetalert2/dist/sweetalert2.min.js',
2016-08-28 11:49:22 +08:00
];
let vendorCss = [
2016-09-25 09:00:40 +08:00
'bootstrap/dist/css/bootstrap.min.css',
'AdminLTE/dist/css/AdminLTE.min.css',
'AdminLTE/plugins/datatables/dataTables.bootstrap.css',
2016-09-25 09:00:40 +08:00
'bootstrap-fileinput/css/fileinput.min.css',
'font-awesome/css/font-awesome.min.css',
'iCheck/skins/square/blue.css',
'toastr/toastr.min.css',
'sweetalert2/dist/sweetalert2.min.css',
2016-08-28 11:49:22 +08:00
];
2017-01-18 23:05:32 +08:00
let replacements = [
2016-09-24 23:48:52 +08:00
['blue.png', '"../images/blue.png"'],
['blue@2x.png', '"../images/blue@2x.png"'],
['../fonts/glyphicons', '../fonts/glyphicons'],
['../fonts/fontawesome', '../fonts/fontawesome'],
2016-09-24 23:48:52 +08:00
['../img/loading.gif', '"../images/loading.gif"'],
['../img/loading-sm.gif', '"../images/loading-sm.gif"'],
['@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);', ''],
];
let fonts = [
'font-awesome/fonts/**',
'bootstrap/dist/fonts/**',
];
let images = [
'iCheck/skins/square/blue.png',
'iCheck/skins/square/blue@2x.png',
'bootstrap-fileinput/img/loading.gif',
'bootstrap-fileinput/img/loading-sm.gif',
2016-08-28 11:49:22 +08:00
];
2016-09-25 09:00:40 +08:00
elixir.config.sourcemaps = false;
2017-01-18 23:05:32 +08:00
elixir((mix) => {
mix // compile sass files & ES6 scripts first
.task('compile-sass')
.task('compile-es6')
.scripts(convertRelativePath(vendorJs).concat([
'resources/assets/dist/js/general.js'
2016-09-25 00:03:07 +08:00
]), 'resources/assets/dist/js/app.min.js', './')
2016-08-28 11:49:22 +08:00
.styles(convertRelativePath(vendorCss), 'resources/assets/dist/css/app.min.css', './')
2016-09-25 00:03:07 +08:00
.replace('resources/assets/dist/css/app.min.css', replacements)
2016-08-28 11:49:22 +08:00
2016-08-28 18:34:41 +08:00
// copy fonts & images
.copy(convertRelativePath(fonts), 'resources/assets/dist/fonts/')
.copy(convertRelativePath(images), 'resources/assets/dist/images/');
2016-07-21 22:01:57 +08:00
});
2016-08-28 11:49:22 +08:00
// compile sass
gulp.task('compile-sass', () => {
2016-09-25 00:03:07 +08:00
gulp.src('resources/assets/src/sass/*.scss')
2016-08-28 11:49:22 +08:00
.pipe(sass().on('error', sass.logError))
2016-07-21 22:01:57 +08:00
.pipe(cleanCss())
2016-09-25 00:03:07 +08:00
.pipe(gulp.dest('./resources/assets/dist/css'));
2016-07-21 22:01:57 +08:00
});
gulp.task('compile-es6', () => {
2016-09-25 00:03:07 +08:00
gulp.src('resources/assets/src/js/*.js')
.pipe(babel({
presets: ['es2015']
}))
2016-07-21 22:01:57 +08:00
.pipe(uglify())
2016-09-25 00:03:07 +08:00
.pipe(gulp.dest('./resources/assets/dist/js'));
2016-07-21 22:01:57 +08:00
});
2016-12-30 16:18:13 +08:00
// delete cache files
2017-01-18 23:05:32 +08:00
gulp.task('clear', () => {
2016-12-30 16:18:13 +08:00
clearCache();
});
// release
2017-01-18 23:05:32 +08:00
gulp.task('zip', () => {
2016-12-30 16:18:13 +08:00
clearCache();
2016-08-28 18:34:41 +08:00
console.info("============================================================================")
console.info("= Don't forget to compile Sass & ES2015 files before publishing a release! =");
console.info("============================================================================")
let zipPath = `blessing-skin-server-v${version}.zip`;
console.log(`Zip archive will be saved to ${zipPath}.`);
2016-07-23 16:24:44 +08:00
return gulp.src([
'**/*.*',
2016-07-29 16:13:21 +08:00
'LICENSE',
2016-07-24 11:13:41 +08:00
'!tests/**/*.*',
2016-07-23 16:24:44 +08:00
'!node_modules/**/*.*',
2016-09-15 11:10:13 +08:00
'!storage/textures/**/*.*',
2016-07-23 16:24:44 +08:00
'!.env',
'!.bowerrc',
'!.gitignore',
'!.git/**/*.*',
'!.git/',
'!.gitattributes',
2016-08-28 18:34:41 +08:00
'!artisan',
2016-07-23 16:24:44 +08:00
'!koala-config.json',
'!gulpfile.js',
'!package.json',
'!composer.json',
'!composer.lock',
'!bower.json',
2016-09-25 00:03:07 +08:00
'!resources/assets/src/**/*.*',
2016-07-23 16:24:44 +08:00
'!.sass-cache/**/*.*',
2016-08-28 18:34:41 +08:00
'!.sass-cache/',
// do not pack vendor for developments
'!vendor/fzaninotto/**/*.*',
'!vendor/mockery/**/*.*',
'!vendor/phpunit/**/*.*',
'!vendor/symfony/css-selector/**/*.*',
'!vendor/symfony/dom-crawler/**/*.*'
2016-07-23 16:24:44 +08:00
], { dot: true })
.pipe(zip(zipPath))
.pipe(gulp.dest('../'))
.pipe(notify({ message: `Zip archive saved to ${zipPath}!` }));
2016-07-23 16:24:44 +08:00
});
gulp.task('notify')
gulp.task('watch', () => {
// Watch .scss files
gulp.watch('resources/assets/src/sass/*.scss', ['compile-sass'], () => notify({ message: 'Sass files compiled!' }));
// Watch .js files
gulp.watch('resources/assets/src/js/*.js', ['compile-es6'], () => notify({ message: 'ES6 scripts compiled!' }));
gulp.watch('resources/assets/src/js/general.js', ['scripts']);
});
function convertRelativePath(paths) {
return paths.map(relativePath => 'resources/assets/src/bower_components/' + relativePath);
}
function clearCache() {
return del([
'storage/logs/*',
'storage/debugbar/*',
'storage/update_cache/*',
'storage/yaml-translation/*',
'storage/framework/cache/*',
'storage/framework/sessions/*',
'storage/framework/views/*'
]);
}