babylonWebpackConfig.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const webpack = require('webpack');
  2. const babylonExternals = require('./babylonExternals');
  3. const config = require("../Config/config.js");
  4. module.exports = function defaultConfig(options) {
  5. if (!options) {
  6. throw "Options are mandatory to create the config.";
  7. }
  8. const module = options.module;
  9. const settings = config[module];
  10. options.resolveExtensions = options.resolveExtensions || [];
  11. options.moduleRules = options.moduleRules || [];
  12. options.plugins = options.plugins || [];
  13. return {
  14. context: settings.computed.srcDirectory,
  15. entry: {
  16. [settings.build.umd.packageName]: settings.libraries[0].computed.entryPath
  17. },
  18. output: {
  19. path: settings.computed.distDirectory,
  20. filename: settings.libraries[0].output
  21. .replace(".min.", ".")
  22. .replace(".max.", "."),
  23. libraryTarget: 'umd',
  24. library: {
  25. root: settings.build.umd.webpackRoot.split("."),
  26. amd: settings.build.umd.packageName,
  27. commonjs: settings.build.umd.packageName
  28. },
  29. umdNamedDefine: true,
  30. globalObject: '(typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)'
  31. },
  32. resolve: options.resolve || {
  33. extensions: [".ts", ...options.resolveExtensions]
  34. },
  35. externals: [babylonExternals()],
  36. devtool: "none",
  37. module: {
  38. rules: [{
  39. test: /\.tsx?$/,
  40. loader: 'awesome-typescript-loader',
  41. options: {
  42. configFileName: settings.computed.tsConfigPath,
  43. declaration: false
  44. }
  45. }, ...options.moduleRules]
  46. },
  47. mode: "production",
  48. performance: {
  49. hints: false
  50. },
  51. plugins: [
  52. new webpack.WatchIgnorePlugin([
  53. /\.js$/,
  54. /\.d\.ts$/,
  55. /\.fx$/
  56. ]),
  57. ...options.plugins
  58. ]
  59. }
  60. };