babylonWebpackConfig.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. .replace(".min.", ".")
  23. .replace(".max.", "."),
  24. libraryTarget: 'umd',
  25. library: {
  26. root: settings.build.umd.webpackRoot.split("."),
  27. amd: settings.build.umd.packageName,
  28. commonjs: settings.build.umd.packageName
  29. },
  30. umdNamedDefine: true
  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 hardSourceWebpackPlugin(),
  53. new webpack.WatchIgnorePlugin([
  54. /\.js$/,
  55. /\.d\.ts$/,
  56. /\.fx$/
  57. ]),
  58. ...options.plugins
  59. ]
  60. }
  61. };