canape/webpack.config.js

72 lines
1.6 KiB
JavaScript

var webpack = require("webpack");
var path = require("path");
var BUILD_DIR = path.resolve(__dirname, "build/public/");
if (process.env.NODE_ENV === "production") {
BUILD_DIR = path.resolve(__dirname, "canapeapp/public/");
}
var SRC_DIR = path.resolve(__dirname, "src/public/js");
const config = {
entry: path.join(SRC_DIR, "app.js"),
output: {
path: BUILD_DIR,
filename: "js/app.js",
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["env", "react", "stage-2"]
}
}
},
{
test: /\.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
}]
},
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [{
loader: "url-loader?limit=10000&mimetype=application/font-woff"
}]
},
{
test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: [{
loader: "file-loader"
}]
}
]
},
plugins: [
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV)
})
],
resolve: {
extensions: [".js", ".jsx"]
},
};
if (process.env.NODE_ENV === "production") {
config.plugins.push(
new webpack.optimize.UglifyJsPlugin()
)
} else {
config.devtool = "#cheap-module-source-map"
}
module.exports = config;