generator-applicaster-starter
Version:
yeoman generator to kick start applicaster react-redux web app
79 lines (73 loc) • 2.07 kB
JavaScript
import webpack from "webpack";
import path from "path";
import basscss from "postcss-basscss";
import cssnext from "cssnext";
import HtmlWebpackPlugin from "html-webpack-plugin";
import CleanWebpackPlugin from "clean-webpack-plugin";
const postcss = () => {
return [
basscss({
raw: true,
}),
cssnext({
compress: true,
features: {
rem: false,
pseudoElements: false,
},
}),
];
};
const devtool = process.env.NODE_ENV === "development" ? "#source-map" : "";
const plugins = [
new CleanWebpackPlugin(["build"]),
new HtmlWebpackPlugin({
template: path.join(__dirname, "/app/index.ejs"),
filename: "index.html",
}),
new webpack.EnvironmentPlugin(["NODE_ENV"]),
];
const publicPath = process.env.NODE_ENV === "development" ? "/" : "<%= serverPath %>";
module.exports = {
context: path.join(__dirname, "/app"),
entry: {
javascript: ["babel-polyfill", "./index.jsx"],
},
output: {
path: path.join(__dirname, "/build"),
filename: "bundle.[hash].js",
publicPath,
},
resolve: {
root: [path.join(__dirname, "app")],
extensions: ["", ".js", ".jsx", ".css"],
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ["react-hot", "babel-loader"],
}, {
test: /\.html$/,
loader: "file?name=[name].[ext]",
}, {
test: /\.json$/,
loader: "json",
}, {
test: /\.css$/,
loader: "style-loader!css-loader!postcss-loader",
}, {
test: /\.scss$/,
loaders: ['style', 'css', 'sass']
}, {
test: /\.(woff|woff2|eot|ttf|svg)$/,
loader: "url-loader?limit=1000000",
}, {
test: /\.(png|jpg)$/,
loader: "file-loader?name=assets/images/[name].[ext]",
}],
},
postcss,
devtool,
plugins,
};