babylonWebpackConfig.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. },
  31. resolve: options.resolve || {
  32. extensions: [".ts", ...options.resolveExtensions]
  33. },
  34. externals: [babylonExternals()],
  35. devtool: "none",
  36. module: {
  37. rules: [{
  38. test: /\.tsx?$/,
  39. loader: 'awesome-typescript-loader',
  40. options: {
  41. configFileName: settings.computed.tsConfigPath,
  42. declaration: false
  43. }
  44. }, ...options.moduleRules]
  45. },
  46. mode: "production",
  47. performance: {
  48. hints: false
  49. },
  50. plugins: [
  51. new webpack.WatchIgnorePlugin([
  52. /\.js$/,
  53. /\.d\.ts$/,
  54. /\.fx$/
  55. ]),
  56. ...options.plugins
  57. ]
  58. }
  59. };