babylonWebpackConfig.js 2.0 KB

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