Skip to content

Instantly share code, notes, and snippets.

@jasonals
Last active August 29, 2015 14:15
Show Gist options
  • Save jasonals/6abfccdd90ee2f614339 to your computer and use it in GitHub Desktop.
Save jasonals/6abfccdd90ee2f614339 to your computer and use it in GitHub Desktop.
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var HtmlWebpackPlugin = require("html-webpack-plugin");
var path = require('path');
// process.env.NODE_ENV = 'development';
var srcpath = JSON.stringify(path.join(__dirname, 'src'));
var DEBUG = process.env.NODE_ENV !== 'production';
var plugins = [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
DEBUG: DEBUG,
__srcpath: srcpath
}),
new ExtractTextPlugin(DEBUG ? "css/styles.css" : "css/styles.min.css", {
allChunks: true
}),
new HtmlWebpackPlugin({
template: 'src/index.html'
})
];
if (!DEBUG) {
Array.prototype.push.apply(plugins, [
new webpack.optimize.UglifyJsPlugin({output: {comments: false}}),
new webpack.optimize.OccurenceOrderPlugin()
]);
}
module.exports = {
entry: {
app: './src/app.js',
},
output: {
path: 'dist',
filename: DEBUG ? 'js/[name].js' : 'js/[name]-[hash].min.js'
},
// externals: ['jquery'],
// modulesDirectories: ['shared', 'node_modules'],
module: {
loaders: [
// {test: /\.coffee$/, loader: 'coffee-loader'},
{test: /\.js$/, loader: '6to5-loader!jsx-loader', exclude: /node_modules/},
// {test: /\.styl$/, loader: 'style-loader!css-loader!autoprefixer-loader!stylus-loader'},
{test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader','css-loader?sourceMap!autoprefixer-loader')},
{test: /\.less$/, loader: ExtractTextPlugin.extract('style-loader','css-loader?sourceMap!autoprefixer-loader!less-loader')},
{test: /\.(scss|sass)$/, loader: ExtractTextPlugin.extract('style-loader','css-loader?sourceMap!autoprefixer-loader!sass-loader')},
// {test: /\.json$/, loader: 'json-loader'},
// {test: /\.jade$/, loader: 'jade-loader'},
{test: /index(\-dev|\-prod).html$/, loader: 'file-loader?name=index.html'},
{test: /\.(jpg|jpeg|gif|png)$/, loader: 'file-loader?name=/imgs/[name]-[hash].[ext]&limit=10000'},
{test: /\.svg($|\?)/, loader: 'file-loader?name=/imgs/[name]-[hash].[ext]'},
// {test: /\.(jpg|jpeg|gif|png)$/, loader: 'url-loader?limit=100000&mimetype=image/png'},
// {test: /\.(png|jpg|jpeg|gif)$/, loader: 'file-loader?name=[path][name].[ext]&limit=8192&context=./src'},
// {test: /index\.jade$/, loader: "file-loader?name=[name].html&context=./src!template-html-loader?raw"},
{test: /\.(eot|ttf|woff|woff2)($|\?)/, loader: "file-loader?name=/css/[name]-[hash].[ext]"},
]
},
resolve: {
extensions: ['','.js','.json','.scss']
// root: [path.join(__dirname, "src")]
},
devtool: "source-map",
plugins: plugins
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment