Skip to content

Commit

Permalink
#88, #89, #90: Zip inside zip issue fixed, added test:watch, gulp 4…
Browse files Browse the repository at this point in the history
… updates.
  • Loading branch information
alenvuletic committed Jan 18, 2018
1 parent acf103f commit e12725d
Show file tree
Hide file tree
Showing 10 changed files with 2,297 additions and 501 deletions.
3 changes: 2 additions & 1 deletion .eslintrc
@@ -1,7 +1,8 @@
{
"env": {
"browser": true,
"es6": true
"es6": true,
"node": true
},
"parserOptions": {
"sourceType": "module"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -18,6 +18,7 @@ Thumbs.db
# ---------------
# Compiled assets
# ---------------
release-assets/
dist/*
!dist/inline.css
!dist/embed.css
Expand Down
56 changes: 37 additions & 19 deletions gulp/config.js
@@ -1,21 +1,39 @@
module.exports = {

SASS_BUILD_FILES: [
'scss/*.scss'
],

SASS_LINT_FILES: [
'scss/**/*.scss'
],

VERSIONED_FILES: [
'package.json',
'README.md',
'docs/getting-started.md'
],

TEST_BUILD_FILES: [
'test/**/*.html'
],

paths: {
sass: {
src: [ 'scss/*.scss' ],
dest: [ './dist' ],
lint: [ 'scss/**/*.scss' ],
},
test: {
src: [ 'test/**/*.html' ],
dest: [ 'test/' ],
clean: [
'test/**/*.html',
'!test/**/*-source.html',
],
watch: [
'scss/**/*.scss',
'test/**/*-source.html',
],
},
release: {
versionedFiles: [
'package.json',
'README.md',
'docs/getting-started.md',
],
assets: {
src: [ './dist/*' ],
dest: [ './release-assets' ],
}
},
examples: {
src: [
'test/**/*.html',
'!test/**/*-source.html'
],
dest: [ 'docs/examples' ],
},
},
};
20 changes: 20 additions & 0 deletions gulp/tasks/examples.js
@@ -0,0 +1,20 @@
var gulp = require( 'gulp' );
var del = require( 'del' );

// Require main configuration file
var config = require( '../config.js' );

// Export functions
exports.clean = clean;
exports.move = move;

// Remove existing example files
function clean() {
return del( config.paths.examples.dest );
}

// Move new example files to documentation folder
function move() {
return gulp.src( config.paths.examples.src )
.pipe( gulp.dest( config.paths.examples.dest ) );
}
101 changes: 29 additions & 72 deletions gulp/tasks/release.js
@@ -1,31 +1,22 @@
var gulp = require( 'gulp' );
var replace = require( 'gulp-replace' );
var inquirer = require( 'inquirer' );
var sass = require( 'gulp-sass' );
var plumber = require( 'gulp-plumber' );
var styleLint = require( 'gulp-stylelint' );
var rename = require( 'gulp-rename' );
var combineMq = require( 'gulp-combine-mq' );
var del = require( 'del' );
var sequence = require( 'run-sequence' );
var replace = require( 'gulp-replace' );
var gulpZip = require( 'gulp-zip' );

var CONFIG = require( '../config.js' );
var CURRENT_VERSION = require( '../../package.json' ).version;
var NEXT_VERSION;
// Require main configuration file
var config = require( '../config.js' );

// Pack everything up for new release
gulp.task( 'release:prep', function( callback ) {
sequence(
'release:prompt',
'release:version',
'release:dist',
'release:examples',
callback
);
} );
// Version variables
var currentVersion = require( '../../package.json' ).version;
var nextVersion;

// Export functions
exports.prompt = prompt;
exports.version = version;
exports.assets = assets;

// Security check, asking for new version number
gulp.task( 'release:prompt', function( callback ) {
function prompt( callback ) {
inquirer.prompt( [
{
type: 'confirm',
Expand All @@ -42,7 +33,10 @@ gulp.task( 'release:prompt', function( callback ) {
{
type: 'input',
name: 'version',
message: 'What version are we moving to? (Current version is ' + CURRENT_VERSION + ')',
message:
'What version are we moving to? (Current version is ' +
currentVersion +
')',
validate: function( value ) {
if ( value === '' ) {
return 'You have to enter valid version value (eg. 3.0.0).';
Expand All @@ -53,59 +47,22 @@ gulp.task( 'release:prompt', function( callback ) {
}
] )
.then( function( result ) {
NEXT_VERSION = result.version;
nextVersion = result.version;
callback();
} );
} );
} );
}

// Bumps the version number in any file that has one
gulp.task( 'release:version', function() {
return gulp.src( CONFIG.VERSIONED_FILES, { base: process.cwd() } )
.pipe( replace( CURRENT_VERSION, NEXT_VERSION ) )
function version() {
return gulp.src( config.paths.release.versionedFiles, { base: process.cwd() } )
.pipe( replace( currentVersion, nextVersion ) )
.pipe( gulp.dest( '.' ) );
} );

// Builds Bojler dist files
gulp.task( 'release:dist', function() {
return gulp.src( CONFIG.SASS_BUILD_FILES )
.pipe( plumber() )
.pipe( sass( { outputStyle: 'expanded' } )
.on( 'error', sass.logError ) )
.pipe( combineMq() )
.pipe( gulp.dest( './dist' ) )
.pipe( sass( { outputStyle: 'compressed' } )
.on( 'error', sass.logError ) )
.pipe( combineMq( {
beautify: false
} ) )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( './dist' ) )
.on( 'finish', function() {
gulp.src( CONFIG.SASS_LINT_FILES )
.pipe( plumber() )
.pipe( styleLint( {
configFile: './.stylelintrc',
reporters: [
{
formatter: 'string',
console: true
}
],
syntax: 'scss'
} ) );
} );
} );

// Build test files and move them to docs
gulp.task( 'release:examples', [ 'test:build', 'release:examples:clean' ], function() {
return gulp.src( [ 'test/**/*.html', '!test/**/*-source.html' ] )
.pipe( gulp.dest( 'docs/examples' ) );
} );
}

// Remove existing example files
gulp.task( 'release:examples:clean', function() {
return del( [
'docs/examples',
] );
} );
// Create release assets
function assets() {
return gulp.src( config.paths.release.assets.src )
.pipe( gulpZip( 'bojler-' + nextVersion + '-dist.zip' ) )
.pipe( gulp.dest( config.paths.release.assets.dest ) );
}
41 changes: 41 additions & 0 deletions gulp/tasks/sass.js
@@ -0,0 +1,41 @@
var gulp = require( 'gulp' );
var sass = require( 'gulp-sass' );
var styleLint = require( 'gulp-stylelint' );
var combineMq = require( 'gulp-combine-mq' );
var rename = require( 'gulp-rename' );

// Require main configuration file
var config = require( '../config.js' );

// Export functions
exports.lint = lint;
exports.build = build;

// Lint SASS
function lint() {
return gulp.src( config.paths.sass.lint )
.pipe( styleLint( {
configFile: './.stylelintrc',
reporters: [
{
formatter: 'string',
console: true,
}
],
syntax: 'scss',
} ) );
}

// Build SASS dist. files
function build() {
return gulp.src( config.paths.sass.src )
.pipe( sass( { outputStyle: 'expanded' } )
.on( 'error', sass.logError ) )
.pipe( combineMq() )
.pipe( gulp.dest( config.paths.sass.dest ) )
.pipe( sass( { outputStyle: 'compressed' } )
.on( 'error', sass.logError ) )
.pipe( combineMq( { beautify: false } ) )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( config.paths.sass.dest ) );
}
54 changes: 27 additions & 27 deletions gulp/tasks/test.js
@@ -1,36 +1,36 @@
var gulp = require( 'gulp' );
var del = require( 'del' );
var juice = require( '@akzhan/gulp-juice' );
var rename = require( 'gulp-rename' );
var del = require( 'del' );

var CONFIG = require( '../config.js' );
// Require main configuration file
var config = require( '../config.js' );

// Export functions
exports.clean = clean;
exports.build = build;

// Remove dist test files
function clean() {
return del( config.paths.test.clean );
}

// Build test files
gulp.task( 'test:build', [ 'test:clean' ], function() {
return gulp.src( CONFIG.TEST_BUILD_FILES )
.pipe(
juice( {
applyHeightAttributes: false,
applyWidthAttributes: false,
xmlMode: true,
webResources: {
images: false,
svgs: false,
scripts: false,
links: false,
},
} )
)
function build() {
return gulp.src( config.paths.test.src )
.pipe( juice( {
applyHeightAttributes: false,
applyWidthAttributes: false,
xmlMode: true,
webResources: {
images: false,
svgs: false,
scripts: false,
links: false,
},
} ) )
.pipe( rename( function( path ) {
path.basename = path.basename.replace( '-source', '' );
} ) )
.pipe( gulp.dest( 'test/' ) );
} );

// Remove dist test files
gulp.task( 'test:clean', function() {
return del( [
'test/**/*.html',
'!test/**/*-source.html',
] );
} );
.pipe( gulp.dest( config.paths.test.dest ) );
}
63 changes: 61 additions & 2 deletions gulpfile.js
@@ -1,5 +1,64 @@
var gulp = require( 'gulp' );
var requireDir = require( 'require-dir' );

requireDir( './gulp/tasks' );
// Require main configuration file
var config = require( './gulp/config.js' );

// Require tasks
var sass = require( './gulp/tasks/sass.js' );
var test = require( './gulp/tasks/test.js' );
var examples = require( './gulp/tasks/examples.js' );
var release = require( './gulp/tasks/release.js' );

// SASS build task
gulp.task(
'sass',
gulp.series( [
sass.lint,
sass.build,
] )
);

// Test build task
gulp.task(
'test',
gulp.series( [
test.clean,
test.build,
] )
);

// Test watch task
gulp.task(
'test:watch',
function() {
gulp.watch(
config.paths.test.watch,
gulp.series( [
'sass',
'test',
] )
);
}
);

// Examples build and migration task
gulp.task(
'examples',
gulp.series( [
'test',
examples.clean,
examples.move,
] )
);

// Release main task
gulp.task(
'release',
gulp.series( [
release.prompt,
release.version,
'sass',
'examples',
release.assets,
] )
);

0 comments on commit e12725d

Please sign in to comment.