Skip to content

Instantly share code, notes, and snippets.

@pekkis
Created June 13, 2015 11:42
Show Gist options
  • Save pekkis/e288ec94792dd91f1bc9 to your computer and use it in GitHub Desktop.
Save pekkis/e288ec94792dd91f1bc9 to your computer and use it in GitHub Desktop.
Lusso
var webpack = require('webpack');
module.exports = function (grunt) {
'use strict';
require('jit-grunt')(grunt);
grunt.loadNpmTasks('grunt-text-replace');
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
'http-server': {
'dev': {
// the server root directory
root: 'client/web',
port: 7778,
// port: function() { return 8282; }
host: "0.0.0.0",
cache: 0,
showDir : true,
autoIndex: true,
// server default file extension
ext: "html",
// run in parallel with other tasks
runInBackground: false
}
},
webpack: {
options: {
storeStatsTo: "stats",
entry: "./client/app.js",
output: {
path: "client/web",
publicPath: "/",
filename: "app.js",
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.less$/,
loader: "style-loader!css-loader!autoprefixer-loader?browsers=last 2 version!less-loader"
},
{
test: /\.(jpe?g|png|gif)$/i,
loaders: ['image?optimizationLevel=7&interlaced=true']
},
{
test: /\.(woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "url-loader?limit=10000&mimetype=application/font-woff"
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "file-loader"
}
],
}
},
dev: {
progress: true,
failOnError: false,
watch: true,
keepalive: true
},
prod: {
progress: true,
failOnError: false,
watch: false,
keepalive: false,
output: {
path: "client/web",
publicPath: "/",
filename: "app.[hash].js",
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
'mangle': false,
'compress': {
dead_code : false, // discard unreachable code
unsafe : false, // some unsafe optimizations (see below)
unused : false, // drop unused variables/functions
hoist_vars : false, // hoist variable declarations
side_effects : false, // drop side-effect-free statements
global_defs : {} // glob
}
}),
],
}
},
replace: {
revision: {
src: ['client/web/index.html'], // source files array (supports minimatch)
dest: 'client/web/', // destination directory or file
replacements: [
{
from: /app(\.[a-z0-9]+)?\.js?/gi, // regex replacement ('Fooo' to 'Mooo')
to: 'app.<%= stats.hash %>.js'
}
]
}
}
});
grunt.registerTask('default', ['webpack:prod', 'replace']);
grunt.registerTask('dev', ['webpack:dev']);
};
{
"name": "mhm-2015",
"version": "1.0.0",
"dependencies": {
"autoprefixer-loader": "^1.2.0",
"avatar-generator": "^1.0.6",
"babel": "^5.2.6",
"babel-core": "^5.2.6",
"babel-loader": "^5.0.0",
"bluebird": "^2.9.25",
"bootstrap": "^3.3.4",
"classnames": "^1.2.2",
"clone": "^1.0.2",
"css-loader": "^0.12.0",
"eventemitter3": "^1.0.1",
"express": "^4.12.3",
"file-loader": "^0.8.1",
"grunt": "^0.4.5",
"grunt-http-server": "^1.3.0",
"grunt-text-replace": "^0.4.0",
"grunt-webpack": "^1.0.8",
"image-loader": "0.0.1",
"immutable": "^3.7.2",
"jit-grunt": "^0.9.1",
"less": "^2.5.0",
"less-loader": "^2.2.0",
"node-uuid": "^1.4.3",
"random-js": "^1.0.4",
"react": "^0.13.2",
"react-bootstrap": "^0.21.2",
"react-dnd": "^0.9.8",
"react-router": "^0.13.3",
"react-router-bootstrap": "^0.13.0",
"reflux": "^0.2.7",
"roundrobin": "^1.0.2",
"socket.io": "^1.3.5",
"socket.io-client": "^1.3.5",
"stochasm": "^0.5.0",
"style-loader": "^0.12.1",
"underscore": "^1.8.3",
"url-loader": "^0.5.5",
"webpack": "^1.8.11",
"webpack-dev-server": "^1.8.2"
},
"scripts": {
"babel-node": "babel-node --stage=0",
"start": "grunt http-server & grunt dev & node server/avatar-server.js & nodemon --exec npm run babel-node -- server/server.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment