base.config.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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, ['babel-polyfill', 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, '..', '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|jsx)$/,
  48. loader: 'babel'
  49. },
  50. ]
  51. }
  52. };
  53. };