123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- let gulp = require('gulp'),
- clean = require('gulp-clean'),
- gulpif = require('gulp-if'),
- minify = require('gulp-minify'),
- jshint = require('gulp-jshint'),
- babel = require('gulp-babel'),
- runSequence = require('run-sequence'),
- copy = require('gulp-copy'),
- cleanCss = require('gulp-clean-css'),
- csslint = require('gulp-csslint'),
- rename = require("gulp-rename"),
- imagemin = require("gulp-image"),
- concat = require("gulp-concat"),
- plumber = require("gulp-plumber"),
- zip = require('gulp-zip'),
- useref = require('gulp-useref'),
- args = require('get-gulp-args')(),
- replace = require('gulp-replace-task');
- var platform = 'chrome';
- if (args.platform == 'firefox') {
- platform = 'moz';
- }
- var onError = function (err) {
- console.log(err);
- };
- gulp.task('clean', function() {
- return gulp.src([
- 'release/*',
- 'extension.zip'
- ], {force: true})
- .pipe(clean());
- });
- gulp.task('compress', function() {
- return gulp.src('release/**/*')
- .pipe(zip('extension.zip'))
- .pipe(gulp.dest('.'));
- });
- gulp.task('jslint', function() {
- return gulp.src('extension/**/*.js')
- .pipe(jshint({
- esversion: 6
- }))
- .pipe(jshint.reporter('jshint-stylish'));
- });
- gulp.task('csslint', function() {
- return gulp.src('extension/**/*.css')
- .pipe(csslint())
- .pipe(csslint.formatter())
- });
- gulp.task('dev-no-lint', function() {
- return runSequence(
- 'clean',
- ['core', 'content_scripts'],
- 'images',
- 'manifest',
- 'font'
- );
- });
- gulp.task('dev', function() {
- return runSequence(
- 'clean',
- ['jslint', 'csslint'],
- ['core', 'content_scripts'],
- 'images',
- 'manifest',
- 'font'
- );
- });
- gulp.task('release', function() {
- return runSequence(
- 'clean',
- ['jslint', 'csslint'],
- ['core', 'content_scripts'],
- 'images',
- 'manifest',
- 'font',
- 'compress'
- );
- });
- gulp.task('font', function() {
- return gulp.src('extension/fonts/**/*')
- .pipe(gulp.dest('release/fonts'));
- });
- gulp.task('core', function() {
- return gulp.src('extension/view/*.html')
- .pipe(useref())
- .pipe(plumber({
- errorHandler: onError
- }))
- .pipe(gulpif('*.js', replace({
- patterns : [
- {
- match : /\/\/\*\* NODE(?:\n.*)*\/\/\*\*/,
- replace : ''
- }
- ]
- })))
- .pipe(gulpif('*.js', babel({
- presets: ['es2015']
- })))
- .pipe(gulpif('*.js', minify({
- ext:{
- min:'.js'
- },
- noSource : true
- })))
- .pipe(replace({
- patterns : [
- {
- match : /\*\*\*browser\*\*\*/g,
- replace : platform
- }
- ]
- }))
- .pipe(gulpif('*.css', cleanCss({
- })))
- .pipe(gulp.dest('release/view'));
- });
- gulp.task('content_scripts', function() {
- let notification = gulp.src([
- 'extension/js/content_scripts/notification.js',
- ])
- .pipe(plumber())
- .pipe(gulpif('*.js', replace({
- patterns : [
- {
- match : /\/\/\*\* NODE(?:\n.*)*\/\/\*\*/,
- replace : ''
- }
- ]
- })))
- .pipe(babel({
- presets : ["es2015"]
- }))
- .pipe(concat('notification.js'))
- .pipe(minify({
- ext : {
- min : '.min.js'
- },
- noSource : true
- }))
- .pipe(gulp.dest('release/js'));
- let serp = gulp.src([
- 'extension/js/content_scripts/serp.js'
- ])
- .pipe(plumber())
- .pipe(gulpif('*.js', replace({
- patterns : [
- {
- match : /\/\/\*\* NODE(?:\n.*)*\/\/\*\*/,
- replace : ''
- }
- ]
- })))
- .pipe(babel({
- presets : ["es2015"]
- }))
- .pipe(minify({
- ext : {
- min : '.min.js'
- },
- noSource : true
- }))
- .pipe(gulp.dest('release/js'));
- let extension = gulp.src([
- 'extension/js/content_scripts/extension.js'
- ])
- .pipe(plumber())
- .pipe(gulpif('*.js', replace({
- patterns : [
- {
- match : /\/\/\*\* NODE(?:\n.*)*\/\/\*\*/,
- replace : ''
- }
- ]
- })))
- .pipe(babel({
- presets : ["es2015"]
- }))
- .pipe(minify({
- ext : {
- min : '.min.js'
- },
- noSource : true
- }))
- .pipe(gulp.dest('release/js'));
- return [notification, serp, extension];
- });
- gulp.task('images', function() {
- return gulp.src('extension/images/*')
- .pipe(imagemin())
- .pipe(gulp.dest('release/images'))
- });
- gulp.task('manifest', function() {
- return gulp.src('extension/manifest.json')
- .pipe(gulp.dest('release'))
- })
- gulp.task('watch', function() {
- gulp.watch('extension/**/*', ['dev-no-lint']);
- })
|