1
0
Fork 0
chronos/Gruntfile.js

162 lines
3.0 KiB
JavaScript
Raw Normal View History

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