reactlite
Version:
react minimal components
88 lines (85 loc) • 3.09 kB
JavaScript
var webpack = require("webpack");
var HTMLWebpackPlugin = require("html-webpack-plugin");
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var path = require("path");
var autoprefixer = require('autoprefixer');
// args
// var program = require('commander');
// program
// .version('0.0.1')
// .allowUnknownOption()
// .option('-o, --os [value]', '平台', "default")
// .parse(process.argv);
if (process.env.NODE_ENV == undefined)
process.env.NODE_ENV = 'production';
console.log("NODE_ENV:%s", process.env.NODE_ENV);
var config = {
entry: {
main: path.resolve("src/index.js"),
// "babel-polyfill":"babel-polyfill",
// "react":"react"
// vendor: ["react", "babel-polyfill", "socket.io-client"]
},
externals:["react", "react-dom", "react-redux", "redux", "redux-thunk", "react-addons-update"],
output: {
// libraryTarget:"amd",
path: path.resolve("dist"),
filename: "reactlite.webpack.js",
},
plugins: [
// new webpack.DefinePlugin({
// 'process.env': {
// NODE_ENV: "'" + process.env.NODE_ENV + "'",
// VERSION: "'" + new Date().toLocaleString() + "'" // 加入时间戳作为版本识别
// }
// }),
// new HTMLWebpackPlugin({
// template: path.resolve("index.html"),
// minify: {
// collapseWhitespace: false
// },
// }),
// new ExtractTextPlugin('style.css?[contenthash:8]')
],
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel',
query: {
"presets": [
"es2015",
"react",
"stage-0"
],
"plugins": ["transform-decorators-legacy"]
}
}, {
test: /\.(png|jpeg|jpg|gif)$/,
loader: 'file?name=assets/[name].[ext]?[hash:8]'
}, {
test: /\.less$/,
loader: ExtractTextPlugin.extract( "style-loader", "css-loader!postcss-loader!less-loader?strictMath")
}, {
test: /\.css/,
loader: ExtractTextPlugin.extract( "style-loader", "css-loader!postcss-loader")
}, {
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file?name=assets/[name].[ext]?[hash:8]'
}, {
test: /\.(json|xml)/,
loader: 'file?name=assets/[name].[ext]?[hash:8]'
},{
test: /\.(svg)$/,
loader: 'file?name=assets/[name].[ext]?[hash:8]'
}]
},
postcss: [ autoprefixer({ browsers: ['last 2 versions'] }) ]
};
if (process.env.NODE_ENV == "production") {
// config.plugins.push(
// new webpack.optimize.CommonsChunkPlugin(/* chunkName= */"vendor", /* filename= */"vendor.js"
// ));
}
module.exports = config;