162 lines
3.0 KiB
JavaScript
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']);
|
|
|
|
};
|