Skip to content

Instantly share code, notes, and snippets.

@aldidas
Created March 14, 2016 12:54
Show Gist options
  • Save aldidas/a785207098caa65c33d1 to your computer and use it in GitHub Desktop.
Save aldidas/a785207098caa65c33d1 to your computer and use it in GitHub Desktop.
angular.js - electron app gulpfile
const fs = require('fs'),
del = require('del'),
gulp = require('gulp'),
babel = require('gulp-babel'),
usemin = require('gulp-usemin'),
sass = require('gulp-ruby-sass'),
cssnano = require('gulp-cssnano'),
autoprefixer = require('gulp-autoprefixer'),
uglify = require('gulp-uglify'),
cache = require('gulp-cache'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
notify = require('gulp-notify'),
sourcemaps = require('gulp-sourcemaps'),
merge = require('merge-stream');
gulp.task('style', () => {
return sass('./src/scss/style.scss', { sourcemap: true })
.on('error', sass.logError)
.pipe(autoprefixer('last 2 versions'))
.pipe(rename({
suffix: '.min'
}))
.pipe(cssnano())
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/css'))
.pipe(notify({
message: 'style task completed.'
}));
});
gulp.task('script', () => {
return gulp.src('./src/index.html')
.pipe(usemin({
vendor: [ sourcemaps.init(), uglify(), sourcemaps.write() ],
app: [ sourcemaps.init(), babel({ presets: ['es2015'] }), uglify(), sourcemaps.write() ]
}))
.pipe(gulp.dest('app'))
.pipe(notify({
message: 'script task completed.'
}));
});
gulp.task('images', () => {
return gulp.src('./src/img/**/*')
.pipe(cache(imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
})))
.pipe(gulp.dest('app/img'))
.pipe(notify({
message: 'images task completed.'
}));
});
gulp.task('copy', () => {
const folders = [
{src: './src/fonts/**/*', dest: 'app/fonts'},
{src: './src/html/**/*', dest: 'app/html'},
{src: './src/others/**/*', dest: 'app/others'},
{src: './src/package.json', dest: 'app'},
{src: './src/main.js', dest: 'app'}
];
const tasks = folders.map((ele) => {
return gulp.src(ele.src)
.pipe(cache(gulp.dest(ele.dest)))
.pipe(notify({
message: 'copy task completed.'
}));
});
return merge(tasks);
});
gulp.task('cache:clear', (done) => {
return cache.clearAll(done);
});
gulp.task('cwi', function(done) {
winInstaller({
appDirectory: './build/expo-win32-ia32',
outputDirectory: './build/release-win',
arch: 'ia32'
}).then(done).catch(done);
});
gulp.task('clean', () => {
return del([
'./app/css/**/*',
'./app/html/**/*',
'./app/js/**/*',
'./app/others/**/*',
'./app/index.html',
'./app/main.js',
'./app/package.json'
]);
});
gulp.task('default', ['clean'], () => {
gulp.start('style', 'script', 'copy');
});
gulp.task('watch', () => {
const watched = ['./src/fonts/**/*', './src/html/**/*', './src/others/**/*', './src/main.js'];
gulp.watch('./src/index.html', ['script']);
gulp.watch('./src/scss/**/*', ['style']);
gulp.watch('./src/js/**/*', ['script']);
gulp.watch( watched, ['copy']);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment