mirror of https://github.com/metafizzy/isotope
David DeSandro
9 years ago
3 changed files with 147 additions and 94 deletions
@ -1,87 +0,0 @@ |
|||||||
/*jshint node: true, strict: false */ |
|
||||||
|
|
||||||
// -------------------------- grunt -------------------------- //
|
|
||||||
|
|
||||||
module.exports = function( grunt ) { |
|
||||||
|
|
||||||
var banner = ( function() { |
|
||||||
var src = grunt.file.read('js/isotope.js'); |
|
||||||
var re = new RegExp('^\\s*(?:\\/\\*[\\s\\S]*?\\*\\/)\\s*'); |
|
||||||
var matches = src.match( re ); |
|
||||||
var banner = matches[0].replace( 'Isotope', 'Isotope PACKAGED' ); |
|
||||||
return banner; |
|
||||||
})(); |
|
||||||
|
|
||||||
grunt.initConfig({ |
|
||||||
// ----- global settings ----- //
|
|
||||||
namespace: 'isotope', |
|
||||||
dataDir: 'tasks/data', |
|
||||||
|
|
||||||
// ----- tasks settings ----- //
|
|
||||||
|
|
||||||
jshint: { |
|
||||||
docs: [ 'js/**/*.js' ], |
|
||||||
options: grunt.file.readJSON('.jshintrc') |
|
||||||
}, |
|
||||||
|
|
||||||
requirejs: { |
|
||||||
pkgd: { |
|
||||||
options: { |
|
||||||
baseUrl: 'bower_components', |
|
||||||
include: [ |
|
||||||
'jquery-bridget/jquery-bridget', |
|
||||||
'isotope/js/isotope' |
|
||||||
], |
|
||||||
out: 'dist/isotope.pkgd.js', |
|
||||||
optimize: 'none', |
|
||||||
paths: { |
|
||||||
isotope: '../', |
|
||||||
jquery: 'empty:' |
|
||||||
}, |
|
||||||
wrap: { |
|
||||||
start: banner |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
}, |
|
||||||
|
|
||||||
uglify: { |
|
||||||
pkgd: { |
|
||||||
files: { |
|
||||||
'dist/isotope.pkgd.min.js': [ 'dist/isotope.pkgd.js' ] |
|
||||||
}, |
|
||||||
options: { |
|
||||||
banner: banner |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
grunt.loadNpmTasks('grunt-contrib-jshint'); |
|
||||||
grunt.loadNpmTasks('grunt-contrib-uglify'); |
|
||||||
grunt.loadNpmTasks('grunt-requirejs'); |
|
||||||
|
|
||||||
grunt.registerTask( 'pkgd-edit', function() { |
|
||||||
var outFile = grunt.config.get('requirejs.pkgd.options.out'); |
|
||||||
var contents = grunt.file.read( outFile ); |
|
||||||
// get requireJS definition code
|
|
||||||
var definitionRE = /define\(\s*'isotope\/js\/isotope'(.|\n)+function\( Outlayer/; |
|
||||||
var definition = contents.match( definitionRE )[0]; |
|
||||||
// remove name module
|
|
||||||
var fixDefinition = definition.replace( "'isotope/js/isotope',", '' ) |
|
||||||
// ./item -> isotope/js/item
|
|
||||||
.replace( /'.\//g, "'isotope/js/" ); |
|
||||||
contents = contents.replace( definition, fixDefinition ); |
|
||||||
grunt.file.write( outFile, contents ); |
|
||||||
grunt.log.writeln( 'Edited ' + outFile ); |
|
||||||
}); |
|
||||||
|
|
||||||
grunt.registerTask( 'default', [ |
|
||||||
'jshint', |
|
||||||
'requirejs', |
|
||||||
'pkgd-edit', |
|
||||||
'uglify' |
|
||||||
]); |
|
||||||
|
|
||||||
}; |
|
@ -0,0 +1,135 @@ |
|||||||
|
/*jshint node: true, strict: false */ |
||||||
|
|
||||||
|
var fs = require('fs'); |
||||||
|
var gulp = require('gulp'); |
||||||
|
var rename = require('gulp-rename'); |
||||||
|
var replace = require('gulp-replace'); |
||||||
|
|
||||||
|
// ----- hint ----- //
|
||||||
|
|
||||||
|
var jshint = require('gulp-jshint'); |
||||||
|
|
||||||
|
gulp.task( 'hint-js', function() { |
||||||
|
return gulp.src('js/*.js') |
||||||
|
.pipe( jshint() ) |
||||||
|
.pipe( jshint.reporter('default') ); |
||||||
|
}); |
||||||
|
|
||||||
|
gulp.task( 'hint-test', function() { |
||||||
|
return gulp.src('test/unit/*.js') |
||||||
|
.pipe( jshint() ) |
||||||
|
.pipe( jshint.reporter('default') ); |
||||||
|
}); |
||||||
|
|
||||||
|
gulp.task( 'hint-task', function() { |
||||||
|
return gulp.src('gulpfile.js') |
||||||
|
.pipe( jshint() ) |
||||||
|
.pipe( jshint.reporter('default') ); |
||||||
|
}); |
||||||
|
|
||||||
|
var jsonlint = require('gulp-json-lint'); |
||||||
|
|
||||||
|
gulp.task( 'jsonlint', function() { |
||||||
|
return gulp.src( '*.json' ) |
||||||
|
.pipe( jsonlint() ) |
||||||
|
.pipe( jsonlint.report('verbose') ); |
||||||
|
}); |
||||||
|
|
||||||
|
gulp.task( 'hint', [ 'hint-js', 'hint-test', 'hint-task', 'jsonlint' ]); |
||||||
|
|
||||||
|
// -------------------------- make pkgd -------------------------- //
|
||||||
|
|
||||||
|
// regex for banner comment
|
||||||
|
var reBannerComment = new RegExp('^\\s*(?:\\/\\*[\\s\\S]*?\\*\\/)\\s*'); |
||||||
|
|
||||||
|
function getBanner() { |
||||||
|
var src = fs.readFileSync( 'js/isotope.js', 'utf8' ); |
||||||
|
var matches = src.match( reBannerComment ); |
||||||
|
var banner = matches[0].replace( 'Isotope', 'Isotope PACKAGED' ); |
||||||
|
return banner; |
||||||
|
} |
||||||
|
|
||||||
|
function addBanner( str ) { |
||||||
|
return replace( /^/, str ); |
||||||
|
} |
||||||
|
|
||||||
|
var rjsOptimize = require('gulp-requirejs-optimize'); |
||||||
|
|
||||||
|
gulp.task( 'requirejs', function() { |
||||||
|
var banner = getBanner(); |
||||||
|
// HACK src is not needed
|
||||||
|
// should refactor rjsOptimize to produce src
|
||||||
|
return gulp.src('js/isotope.js') |
||||||
|
.pipe( rjsOptimize({ |
||||||
|
baseUrl: 'bower_components', |
||||||
|
optimize: 'none', |
||||||
|
include: [ |
||||||
|
'jquery-bridget/jquery-bridget', |
||||||
|
'isotope/isotope' |
||||||
|
], |
||||||
|
paths: { |
||||||
|
isotope: '../js/', |
||||||
|
jquery: 'empty:' |
||||||
|
} |
||||||
|
}) ) |
||||||
|
// remove named module
|
||||||
|
.pipe( replace( "'isotope/isotope',", '' ) ) |
||||||
|
// add banner
|
||||||
|
.pipe( addBanner( banner ) ) |
||||||
|
.pipe( rename('isotope.pkgd.js') ) |
||||||
|
.pipe( gulp.dest('dist') ); |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
// ----- uglify ----- //
|
||||||
|
|
||||||
|
var uglify = require('gulp-uglify'); |
||||||
|
|
||||||
|
gulp.task( 'uglify', [ 'requirejs' ], function() { |
||||||
|
var banner = getBanner(); |
||||||
|
gulp.src('dist/isotope.pkgd.js') |
||||||
|
.pipe( uglify() ) |
||||||
|
// add banner
|
||||||
|
.pipe( addBanner( banner ) ) |
||||||
|
.pipe( rename('isotope.pkgd.min.js') ) |
||||||
|
.pipe( gulp.dest('dist') ); |
||||||
|
}); |
||||||
|
|
||||||
|
// ----- version ----- //
|
||||||
|
|
||||||
|
// set version in source files
|
||||||
|
|
||||||
|
var minimist = require('minimist'); |
||||||
|
var gutil = require('gulp-util'); |
||||||
|
var chalk = require('chalk'); |
||||||
|
|
||||||
|
// use gulp version -t 1.2.3
|
||||||
|
gulp.task( 'version', function() { |
||||||
|
var args = minimist( process.argv.slice(3) ); |
||||||
|
var version = args.t; |
||||||
|
if ( !version || !/^\d\.\d+\.\d+/.test( version ) ) { |
||||||
|
gutil.log( 'invalid version: ' + chalk.red( version ) ); |
||||||
|
return; |
||||||
|
} |
||||||
|
gutil.log( 'ticking version to ' + chalk.green( version ) ); |
||||||
|
|
||||||
|
gulp.src('js/isotope.js') |
||||||
|
.pipe( replace( /Packery v\d\.\d+\.\d+/, 'Isotope v' + version ) ) |
||||||
|
.pipe( gulp.dest('js') ); |
||||||
|
|
||||||
|
gulp.src( [ 'package.json' ] ) |
||||||
|
.pipe( replace( /"version": "\d\.\d+\.\d+"/, '"version": "' + version + '"' ) ) |
||||||
|
.pipe( gulp.dest('.') ); |
||||||
|
// replace CDN links in README
|
||||||
|
var minorVersion = version.match( /^\d\.\d+/ )[0]; |
||||||
|
gulp.src('README.mdown') |
||||||
|
.pipe( replace( /isotope-layout@\d\.\d+/g, 'isotope-layout@' + minorVersion )) |
||||||
|
.pipe( gulp.dest('.') ); |
||||||
|
}); |
||||||
|
|
||||||
|
// ----- default ----- //
|
||||||
|
|
||||||
|
gulp.task( 'default', [ |
||||||
|
'hint', |
||||||
|
'uglify' |
||||||
|
]); |
Loading…
Reference in new issue