mirror of
https://github.com/Pomax/BezierInfo-2.git
synced 2025-02-24 01:22:26 +01:00
100 lines
2.2 KiB
JavaScript
100 lines
2.2 KiB
JavaScript
var webpack = require('webpack');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
|
|
// see http://jlongster.com/Backend-Apps-with-Webpack--Part-I
|
|
var externals = false;
|
|
|
|
// Bundle entry point
|
|
var entry = ['./components/App.jsx'];
|
|
|
|
// Bundle target
|
|
var target = "web";
|
|
|
|
// Bundle output
|
|
var output = {
|
|
path: __dirname,
|
|
filename: 'article.js'
|
|
};
|
|
|
|
// Necessary webpack loaders for converting our content:
|
|
var webpackLoaders = [
|
|
'babel-loader',
|
|
'eslint',
|
|
__dirname + '/lib/latex-loader',
|
|
__dirname + '/lib/pre-loader',
|
|
__dirname + '/lib/p-loader'
|
|
];
|
|
|
|
var plugins = [];
|
|
|
|
// Dev mode: make certain concessions to speed up dev work.
|
|
if(process.argv.indexOf("--prod") === -1 && process.argv.indexOf("--lint")) {
|
|
// use the webpack hot Reload server:
|
|
entry.push('webpack/hot/dev-server');
|
|
// allow code in textareas when in dev mode:
|
|
webpackLoaders.push(__dirname + '/lib/textarea-loader');
|
|
}
|
|
|
|
// Prod mode: make sure to minify the bundle
|
|
else if(process.argv.indexOf("--prod") > -1) {
|
|
plugins.push(new webpack.optimize.UglifyJsPlugin());
|
|
}
|
|
|
|
// However, do we want one full page, or single pages with react-router?
|
|
if(process.argv.indexOf("--singles") !== -1 ) {
|
|
entry = ['./lib/site/routemap.js'];
|
|
|
|
target = "node";
|
|
|
|
output = {
|
|
path: output.path + '/pages',
|
|
filename: "routemap.js",
|
|
library: "routemap",
|
|
libraryTarget: "commonjs2"
|
|
};
|
|
|
|
console.log("\n","marking node_modules as external","\n");
|
|
externals = {};
|
|
fs.readdirSync('node_modules')
|
|
.filter(function(x) { return ['.bin'].indexOf(x) === -1; })
|
|
.forEach(function(mod) { externals[mod] = 'commonjs ' + mod; });
|
|
plugins.pop();
|
|
}
|
|
|
|
// And the final config that webpack will read in.
|
|
module.exports = {
|
|
entry: entry,
|
|
target: target,
|
|
output: output,
|
|
module: {
|
|
loaders: [
|
|
{
|
|
test: /\.(png|gif)$/,
|
|
loader: "file?name=images/packed/[hash].[ext]"
|
|
},
|
|
{
|
|
test: /\.less$/,
|
|
loader: "style!css!less"
|
|
},
|
|
{
|
|
test: /\.json$/,
|
|
loader: "json"
|
|
},
|
|
{
|
|
test: /.jsx?$/,
|
|
include: [
|
|
/components/,
|
|
/lib.site/
|
|
],
|
|
loaders: webpackLoaders
|
|
}
|
|
]
|
|
},
|
|
plugins: plugins,
|
|
eslint: {
|
|
configFile: __dirname + '/.eslintrc'
|
|
},
|
|
externals: externals
|
|
};
|