1
0
Fork 0
chronos/Gruntfile.js

162 lines
3.0 KiB
JavaScript

module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
webpack: {
app: {
entry: __dirname + '/app/index.jsx',
output: {
filename: 'bundle.js',
path: __dirname + '/dist/app/',
},
resolve: {
extensions: ['.js', '.jsx'],
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
sourceMap: true,
presets: [
['env', {
targets: {
browsers: ['last 2 versions'],
},
modules: false,
}],
'react',
],
},
},
],
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
sourceMap: true,
modules: true,
importLoaders: 1,
localIdentName: '[name]--[local]--[hash:base64:8]',
},
},
{
loader: 'postcss-loader',
},
],
},
],
},
},
},
copy: {
app: {
files: [
{
expand: true,
cwd: __dirname + '/app/',
src: ['index.html'],
dest: __dirname + '/dist/app/',
},
{
expand: true,
cwd: __dirname + '/app/',
src: ['assets/**'],
dest: __dirname + '/dist/app/assets/',
},
{
expand: true,
cwd: __dirname + '/node_modules/oidc-client/',
src: ['dist/**'],
dest: __dirname + '/dist/app/assets/oidc-client/',
},
],
},
},
babel: {
options: {
sourceMap: true,
presets: [
[
'env',
{
targets: {
node: 'current',
},
modules: 'commonjs',
},
],
],
},
server: {
files: [
{
expand: true,
cwd: __dirname + '/server/',
src: ['**/*.js'],
dest: __dirname + '/dist/server/',
},
],
},
},
eslint: {
app: {
files: [
{
expand: true,
cwd: __dirname + '/app/',
src: ['**/*.js*'],
dest: __dirname + '/dist/app/',
},
],
},
server: {
files: [
{
expand: true,
cwd: __dirname + '/server/',
src: ['**/*.js'],
dest: __dirname + '/dist/server/',
},
],
},
},
watch: {
app: {
files: '**/*.js*',
tasks: ['app'],
options: {
cwd: __dirname + '/app/',
},
},
server: {
files: '**/*.js',
tasks: ['server'],
options: {
cwd: __dirname + '/server/',
},
},
},
});
grunt.loadNpmTasks('grunt-webpack');
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-eslint');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('all', ['eslint', 'webpack', 'copy', 'babel']);
grunt.registerTask('app', ['eslint:app', 'webpack:app', 'copy:app']);
grunt.registerTask('server', ['eslint:server', 'babel:server']);
grunt.registerTask('default', ['all']);
};