Files
react-add-to-calendar/gruntfile.js
T

139 lines
3.1 KiB
JavaScript
Raw Normal View History

'use strict'
var _ = require('lodash')
var webpack = require('webpack')
var mergeWebpackConfig = function (config) {
// Load webpackConfig only when using `grunt:webpack`
// load of grunt tasks is faster
var webpackConfig = require('./webpack.config')
return _.merge({}, webpackConfig, config, function (a, b) {
if (_.isArray(a)) {
return a.concat(b)
}
})
}
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
min: {
files: {
'dist/react-add-to-calendar.css': 'src/styles/ReactAddToCalendar.scss'
},
options: {
sourcemap: 'none',
style: 'expanded'
}
},
unmin: {
files: {
'dist/react-add-to-calendar.min.css': 'src/styles/ReactAddToCalendar.scss'
},
options: {
sourcemap: 'none',
style: 'compressed'
}
}
},
watch: {
eslint: {
files: ['{src,test,docs-site/src}/**/*.{js,jsx}', '*.js'],
tasks: ['eslint']
},
css: {
files: '**/*.scss',
tasks: ['sass']
},
karma: {
files: [
'src/**/*.jsx',
'src/**/*.js',
'test/**/*.jsx',
'test/**/*.js'
],
tasks: ['karma']
},
webpack: {
files: ['src/**/*.js', 'src/**/*.jsx'],
tasks: ['webpack']
}
},
scsslint: {
files: ['src/styles/*.scss', 'docs-site/src/*.scss'],
options: {
config: '.scss-lint.yml',
colorizeOutput: true,
exclude: ['docs-site/src/higlight.scss', 'docs-site/src/reset.scss']
}
},
karma: {
unit: {
configFile: 'karma.conf.js',
singleRun: true
}
},
eslint: {
files: ['{src,test,docs-site/src}/**/*.{js,jsx}', '*.js'],
options: {
configFile: '.eslintrc'
}
},
// standalone build for ./dist
webpack: {
unmin: mergeWebpackConfig({
output: {
filename: 'react-add-to-calendar.js'
}
}),
min: mergeWebpackConfig({
output: {
filename: 'react-add-to-calendar.min.js'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
]
}),
docs: require('./webpack.docs.config')
},
// source build for ./lib
babel: {
lib: {
files: [{
expand: true,
cwd: 'src/',
src: ['**/*.js', '**/*.jsx'],
dest: 'lib/',
ext: '.js'
}]
}
}
})
grunt.loadNpmTasks('grunt-contrib-sass')
grunt.loadNpmTasks('grunt-scss-lint')
grunt.loadNpmTasks('grunt-contrib-watch')
grunt.loadNpmTasks('grunt-babel')
grunt.loadNpmTasks('grunt-webpack')
grunt.loadNpmTasks('grunt-karma')
grunt.loadNpmTasks('grunt-eslint')
grunt.registerTask('default', ['watch', 'scsslint'])
grunt.registerTask('travis', ['eslint', 'karma', 'scsslint'])
grunt.registerTask('build', ['scsslint', 'babel', 'webpack', 'sass'])
}