babylonWebpackConfig.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. return {
  18. context: src,
  19. entry: {
  20. [settings.build.processDeclaration.packageName]: path.resolve(src, settings.libraries[0].entry),
  21. },
  22. output: {
  23. path: path.resolve(__dirname, config.build.outputDirectory) + settings.build.distOutputDirectory,
  24. filename: settings.libraries[0].output,
  25. libraryTarget: 'umd',
  26. library: {
  27. root: settings.build.processDeclaration.moduleName.split("."),
  28. amd: settings.build.processDeclaration.packageName,
  29. commonjs: settings.build.processDeclaration.packageName
  30. },
  31. umdNamedDefine: true
  32. },
  33. resolve: {
  34. extensions: [".ts", ...options.resolveExtensions]
  35. },
  36. externals: [babylonExternals()],
  37. devtool: "none",
  38. module: {
  39. rules: [{
  40. test: /\.tsx?$/,
  41. loader: 'awesome-typescript-loader',
  42. options: {
  43. configFileName: path.resolve(webpackFolder, './tsconfig.json'),
  44. declaration: false
  45. }
  46. }]
  47. },
  48. mode: "production",
  49. performance: {
  50. hints: false
  51. },
  52. plugins: [
  53. new hardSourceWebpackPlugin(),
  54. new webpack.WatchIgnorePlugin([
  55. /\.js$/,
  56. /\.d\.ts$/,
  57. /\.fx$/
  58. ])
  59. ]
  60. }
  61. };