webpack.base.config.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. var _ = require('lodash');
  2. var path = require('path');
  3. var glob = require('glob').sync;
  4. var webpack = require('webpack');
  5. var COMMON_PATH = './wagtail/wagtailadmin/static/wagtailadmin/js/common.js';
  6. function appName(filename) {
  7. return _(filename)
  8. .split(path.sep)
  9. .get(2);
  10. }
  11. function entryPoint(filename) {
  12. var name = appName(filename);
  13. var entryName = path.basename(filename, '.entry.js');
  14. var outputPath = path.join('wagtail', name, 'static', name, 'js', entryName);
  15. return [outputPath, filename];
  16. }
  17. function entryPoints(paths) {
  18. return _(glob(paths))
  19. .map(entryPoint)
  20. .fromPairs()
  21. .value();
  22. }
  23. module.exports = function exports() {
  24. var CLIENT_DIR = path.resolve(__dirname, 'client', 'src');
  25. return {
  26. entry: entryPoints('./wagtail/**/static_src/**/app/*.entry.js'),
  27. resolve: {
  28. alias: {
  29. config: path.resolve(CLIENT_DIR, 'config'),
  30. components: path.resolve(CLIENT_DIR, 'components')
  31. }
  32. },
  33. output: {
  34. path: './',
  35. filename: '[name].js',
  36. publicPath: '/static/js/'
  37. },
  38. plugins: [
  39. new webpack.ProvidePlugin({
  40. fetch: 'imports?this=>global!exports?global.fetch!whatwg-fetch'
  41. }),
  42. new webpack.optimize.CommonsChunkPlugin('common', COMMON_PATH, Infinity)
  43. ],
  44. module: {
  45. loaders: [
  46. {
  47. test: /\.js$/,
  48. loader: 'babel'
  49. },
  50. {
  51. test: /\.jsx$/,
  52. loader: 'babel'
  53. }
  54. ]
  55. }
  56. };
  57. };