109 lines
1.8 KiB
JavaScript
109 lines
1.8 KiB
JavaScript
module.exports = function (grunt) {
|
|
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
webpack: {
|
|
app: {
|
|
entry: './app/index.jsx',
|
|
output: {
|
|
filename: 'bundle.js',
|
|
path: './dist/app/'
|
|
},
|
|
resolve: {
|
|
extensions: ['.js', '.jsx'],
|
|
},
|
|
module: {
|
|
loaders: [
|
|
{
|
|
test: /\.jsx?$/,
|
|
exclude: /node_modules/,
|
|
loader: 'babel-loader',
|
|
query: {
|
|
sourceMap: true,
|
|
presets: ['env', 'react']
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
copy: {
|
|
app: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: './app/',
|
|
src: ['index.html'],
|
|
dest: './dist/app/'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: './app/',
|
|
src: ['assets/**'],
|
|
dest: './dist/app/assets/'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: './node_modules/bootstrap/',
|
|
src: ['dist/**'],
|
|
dest: './dist/app/assets/bootstrap/'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
babel: {
|
|
options: {
|
|
sourceMap: true,
|
|
presets: [
|
|
['env', {
|
|
targets: {
|
|
node: 'current'
|
|
}
|
|
}]
|
|
]
|
|
},
|
|
server: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: './server/',
|
|
src: ['**/*.js'],
|
|
dest: './dist/server/'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
eslint: {
|
|
app: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: './app/',
|
|
src: ['**/*.js*'],
|
|
dest: './dist/app/'
|
|
}
|
|
]
|
|
},
|
|
server: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: './server/',
|
|
src: ['**/*.js'],
|
|
dest: './dist/server/'
|
|
}
|
|
]
|
|
}
|
|
}
|
|
});
|
|
|
|
grunt.loadNpmTasks('grunt-webpack');
|
|
grunt.loadNpmTasks('grunt-babel');
|
|
grunt.loadNpmTasks('grunt-eslint');
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
|
|
|
grunt.registerTask('all', ['eslint', 'webpack', 'copy', 'babel']);
|
|
grunt.registerTask('default', ['all']);
|
|
|
|
};
|