babylonWebpackConfig.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. options.entry = options.entry || {
  14. [settings.build.umd.packageName]: settings.libraries[0].computed.entryPath
  15. };
  16. options.output = options.output || {
  17. path: settings.computed.distDirectory,
  18. filename: settings.libraries[0].output
  19. .replace(".min.", ".")
  20. .replace(".max.", "."),
  21. libraryTarget: 'umd',
  22. library: {
  23. root: settings.build.umd.webpackRoot.split("."),
  24. amd: settings.build.umd.packageName,
  25. commonjs: settings.build.umd.packageName
  26. },
  27. umdNamedDefine: true,
  28. globalObject: '(typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)'
  29. };
  30. return {
  31. context: settings.computed.srcDirectory,
  32. entry: options.entry,
  33. output: options.output,
  34. resolve: options.resolve || {
  35. extensions: [".ts", ...options.resolveExtensions]
  36. },
  37. externals: [babylonExternals()],
  38. devtool: "none",
  39. module: {
  40. rules: [{
  41. test: /\.tsx?$/,
  42. loader: 'awesome-typescript-loader',
  43. options: {
  44. configFileName: settings.computed.tsConfigPath,
  45. declaration: false
  46. }
  47. }, ...options.moduleRules]
  48. },
  49. mode: "production",
  50. performance: {
  51. hints: false
  52. },
  53. plugins: [
  54. new webpack.WatchIgnorePlugin([
  55. /\.js$/,
  56. /\.d\.ts$/,
  57. /\.fx$/
  58. ]),
  59. ...options.plugins
  60. ]
  61. }
  62. };