1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-15 21:06:44 +02:00
TableFilter/Gruntfile.js

226 lines
6.4 KiB
JavaScript
Raw Normal View History

module.exports = function (grunt) {
2015-05-14 12:08:19 +02:00
var webpack = require('webpack');
var webpackConfig = require('./webpack.config.js');
var fs = require('fs');
var path = require('path');
// var pkg = grunt.file.readJSON('package.json');
// var version = pkg.version;
var testDir = 'test';
var testHost = 'http://localhost:8080/';
2015-04-28 09:50:53 +02:00
grunt.initConfig({
2015-05-10 13:12:31 +02:00
jshint: {
src: [
'Gruntfile.js',
2015-05-15 16:26:21 +02:00
'webpack.config.js',
2015-06-06 12:06:15 +02:00
'src/**/*.js'
2015-05-10 13:12:31 +02:00
],
options: {
jshintrc: '.jshintrc'
}
},
qunit: {
// files: ['test/**/*.html'],
// urls: ['http://localhost:9000/test/test.html']
all: {
options: {
urls: getTestFiles(testDir, testHost)
}
},
only: {
options: {
urls: []
}
}
2015-05-10 13:12:31 +02:00
},
2015-05-14 12:08:19 +02:00
copy: {
build: {
src: ['**'],
cwd: 'static/style',
dest: 'build/tablefilter',
expand: true
},
dist: {
src: ['**'],
cwd: 'static/style',
dest: 'dist/tablefilter',
expand: true
}
},
'webpack-dev-server': {
options: {
webpack: webpack.dev,
publicPath: '/build/'
},
start: {
keepAlive: true,
webpack: {
2015-05-14 12:08:19 +02:00
devtool: 'eval',
debug: true
}
}
},
webpack: {
2015-05-14 12:08:19 +02:00
dist: webpackConfig.dist,
build: webpackConfig.build
// 'dev': {
2015-06-06 12:06:15 +02:00
// entry: __dirname + '/src/tablefilter.js',
2015-05-10 13:12:31 +02:00
// // entry: {
2015-06-06 12:06:15 +02:00
// // tablefilter: __dirname + '/src/tablefilter.js',
2015-05-10 13:12:31 +02:00
// // colsVisibility: __dirname +
2015-06-06 12:06:15 +02:00
// // '/src/extensions/colsVisibility/colsVisibility.js'
2015-05-10 13:12:31 +02:00
// // },
// output: {
2015-05-14 12:08:19 +02:00
// publicPath: '/src/',
// path: __dirname + '/src',
// filename: 'tablefilter.js',
// chunkFilename: '[name].js',
2015-05-10 13:12:31 +02:00
// libraryTarget: 'umd'
// },
// resolve: {
// extensions: ['', '.js']
// },
// module: {
// loaders: [{
2015-06-06 12:06:15 +02:00
// test: path.join(__dirname, 'src'),
2015-05-10 13:12:31 +02:00
// exclude: /node_modules/,
// query: {
// compact: false
// },
// loader: 'babel-loader'
// }]
// },
2015-05-14 12:08:19 +02:00
// devtool: 'sourcemap',
2015-05-10 13:12:31 +02:00
// debug: true
// },
2015-05-13 12:54:29 +02:00
},
2015-06-05 15:10:25 +02:00
watch: {
app: {
2015-06-06 12:06:15 +02:00
files: ["src/**/*"],
2015-06-05 15:10:25 +02:00
tasks: ["dev"],
options: {
spawn: false
}
}
},
2015-05-13 12:54:29 +02:00
babel: {
options: {
sourceMap: true,
modules: 'amd',
compact: false
},
dist: {
files: [{
expand: true,
2015-06-06 12:06:15 +02:00
cwd: 'src',
2015-05-13 12:54:29 +02:00
src: ['**/*.js'],
dest: 'build/tablefilter'
2015-05-13 12:54:29 +02:00
}]
}
}
});
2015-05-10 13:12:31 +02:00
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
2015-05-14 12:08:19 +02:00
grunt.loadNpmTasks('grunt-contrib-copy');
2015-06-05 15:10:25 +02:00
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-webpack');
2015-05-13 12:54:29 +02:00
grunt.loadNpmTasks('grunt-babel');
grunt.registerTask('default',
['jshint', 'webpack:dist', 'copy:dist', 'test']);
// The development server (the recommended option for development)
grunt.registerTask('server', ['webpack-dev-server:start']);
2015-06-05 15:10:25 +02:00
grunt.registerTask('dev',
['jshint', 'webpack:build', 'copy:build', 'watch:app']);
// Production build
grunt.registerTask('dist',
['jshint', 'webpack:dist', 'copy:dist']);
2015-05-10 13:12:31 +02:00
2015-05-13 12:54:29 +02:00
// Transpile with Babel
2015-05-15 16:26:21 +02:00
grunt.registerTask('dev-modules', ['babel', 'copy:build']);
2015-05-13 12:54:29 +02:00
// Tests
grunt.registerTask('test', ['qunit:all']);
// Custom task running QUnit tests for specified files.
// Usage: grunt test-only:test.html,test-help.html
grunt.registerTask('test-only',
'A task that runs only specified tests.',
function(tests) {
if(!tests) {
return;
}
tests = tests.split(',');
var res = [];
tests.forEach(function(itm) {
var filePath = path.resolve(testDir, itm);
var parts = filePath.split(path.sep);
res.push(buildTestUrl(testHost, testDir, parts));
});
grunt.config('qunit.only.options.urls', res);
grunt.task.run('qunit:only');
});
function isTestFile(pth) {
var allowedExts = ['.html', '.htm'];
for(var i=0, len=allowedExts.length; i<len; i++){
var ext = allowedExts[i];
if(pth.indexOf(ext) !== -1){
return true;
}
}
return false;
}
function buildTestUrl(host, testDir, parts) {
var idx = parts.indexOf(testDir);
var fileIdx = parts.length;
var relParts = parts.slice(idx, fileIdx);
return host.concat(relParts.join('/'));
}
// Returns the list of test files from the test folder for QUnit
function getTestFiles(testDir, host) {
var getFiles = function(dir, host) {
var res = [];
var items = fs.readdirSync(dir);
items.forEach(function(itm){
var fileOrDir = path.resolve(dir, itm);
if(isTestFile(fileOrDir)) {
var parts = fileOrDir.split(path.sep);
res.push(buildTestUrl(host, testDir, parts));
} else {
if(fs.lstatSync(fileOrDir).isDirectory()) {
res = res.concat(getFiles(fileOrDir, host));
}
}
});
return res;
};
return getFiles(testDir, host);
}
2015-02-15 09:55:23 +01:00
};