mirror of https://github.com/RubaXa/Sortable.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.1 KiB
103 lines
2.1 KiB
module.exports = function (grunt) { |
|
'use strict'; |
|
|
|
grunt.initConfig({ |
|
pkg: grunt.file.readJSON('package.json'), |
|
|
|
version: { |
|
js: { |
|
src: ['<%= pkg.exportName %>.js', '*.json'] |
|
}, |
|
cdn: { |
|
options: { |
|
prefix: '(cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/Sortable|cdn\\.jsdelivr\\.net\\/sortable)\\/', |
|
replace: '[0-9\\.]+' |
|
}, |
|
src: ['README.md'] |
|
} |
|
}, |
|
|
|
jshint: { |
|
all: ['*.js', '!*.min.js'], |
|
|
|
options: { |
|
jshintrc: true |
|
} |
|
}, |
|
|
|
uglify: { |
|
options: { |
|
banner: '/*! <%= pkg.exportName %> <%= pkg.version %> - <%= pkg.license %> | <%= pkg.repository.url %> */\n' |
|
}, |
|
dist: { |
|
files: { |
|
'<%= pkg.exportName %>.min.js': ['<%= pkg.exportName %>.js'] |
|
} |
|
}, |
|
jquery: { |
|
files: {} |
|
} |
|
}, |
|
|
|
jquery: {}, |
|
|
|
testcafe: { |
|
test: { |
|
options: { |
|
files: ['test/e2e/index.js'], |
|
browsers: ['chrome'], |
|
startApp: { |
|
command: 'npm run http-server' |
|
}, |
|
skipJsErrors: true //https://github.com/RubaXa/Sortable/issues/1041 |
|
} |
|
} |
|
} |
|
}); |
|
|
|
|
|
grunt.registerTask('jquery', function (exportName, uglify) { |
|
if (exportName == 'min') { |
|
exportName = null; |
|
uglify = 'min'; |
|
} |
|
|
|
if (!exportName) { |
|
exportName = 'sortable'; |
|
} |
|
|
|
var fs = require('fs'), |
|
filename = 'jquery.fn.' + exportName + '.js'; |
|
|
|
grunt.log.oklns(filename); |
|
|
|
fs.writeFileSync( |
|
filename, |
|
(fs.readFileSync('jquery.binding.js') + '') |
|
.replace('$.fn.sortable', '$.fn.' + exportName) |
|
.replace('/* CODE */', |
|
(fs.readFileSync('Sortable.js') + '') |
|
.replace(/^[\s\S]*?function[\s\S]*?(var[\s\S]+)\/\/\s+Export[\s\S]+/, '$1') |
|
) |
|
); |
|
|
|
if (uglify) { |
|
var opts = {}; |
|
|
|
opts['jquery.fn.' + exportName + '.min.js'] = filename; |
|
grunt.config.set('uglify.jquery.files', opts); |
|
|
|
grunt.task.run('uglify:jquery'); |
|
} |
|
}); |
|
|
|
|
|
grunt.loadNpmTasks('grunt-version'); |
|
grunt.loadNpmTasks('grunt-contrib-jshint'); |
|
grunt.loadNpmTasks('grunt-contrib-uglify'); |
|
grunt.loadNpmTasks('grunt-testcafe'); |
|
|
|
grunt.registerTask('tests', ['jshint']); |
|
grunt.registerTask('build', ['version', 'uglify:dist']); |
|
grunt.registerTask('default', ['tests', 'build', 'testcafe']); |
|
};
|
|
|