babylonWebpackConfig.js 2.4 KB

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