webpack.config.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const DtsBundleWebpack = require('dts-bundle-webpack')
  4. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  5. const CleanWebpackPlugin = require('clean-webpack-plugin');
  6. module.exports = {
  7. context: __dirname,
  8. entry: {
  9. 'babylonjs-inspector': path.resolve(__dirname, './legacy/legacy.ts'),
  10. },
  11. output: {
  12. path: path.resolve(__dirname, '../dist/preview release/inspector'),
  13. filename: 'babylon.inspector.bundle.js',
  14. libraryTarget: 'umd',
  15. library: {
  16. root: "INSPECTOR",
  17. amd: "babylonjs-inspector",
  18. commonjs: "babylonjs-inspector"
  19. },
  20. umdNamedDefine: true
  21. },
  22. resolve: {
  23. extensions: [".js", '.ts'],
  24. alias: {
  25. Split: path.resolve(__dirname, '../dist/preview release/split.js')
  26. }
  27. },
  28. externals: {
  29. babylonjs: {
  30. root: "BABYLON",
  31. commonjs: "babylonjs",
  32. commonjs2: "babylonjs",
  33. amd: "babylonjs"
  34. },
  35. "babylonjs-gui": {
  36. root: ["BABYLON", "GUI"],
  37. commonjs: "babylonjs-gui",
  38. commonjs2: "babylonjs-gui",
  39. amd: "babylonjs-gui"
  40. },
  41. "babylonjs-loaders": {
  42. root: "BABYLON",
  43. commonjs: "babylonjs-loaders",
  44. commonjs2: "babylonjs-loaders",
  45. amd: "babylonjs-loaders"
  46. },
  47. "babylonjs-serializers": {
  48. root: "BABYLON",
  49. commonjs: "babylonjs-serializers",
  50. commonjs2: "babylonjs-serializers",
  51. amd: "babylonjs-serializers"
  52. }
  53. },
  54. devtool: "source-map",
  55. module: {
  56. rules: [{
  57. test: /\.tsx?$/,
  58. loader: 'awesome-typescript-loader',
  59. options: {
  60. configFileName: '../../inspector/tsconfig.json',
  61. declarationDir: '../../dist/preview release/inspector/build'
  62. }
  63. },
  64. {
  65. test: /\.scss$/,
  66. use: [
  67. // fallback to style-loader in development
  68. process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader,
  69. "css-loader",
  70. "sass-loader"
  71. ]
  72. }]
  73. },
  74. mode: "production",
  75. devServer: {
  76. contentBase: path.join(__dirname, "dist"),
  77. compress: false,
  78. //open: true,
  79. port: 9000
  80. },
  81. plugins: [
  82. new CleanWebpackPlugin([
  83. path.resolve(__dirname, './src/**/*.js'),
  84. path.resolve(__dirname, './src/**/*.map')
  85. ]),
  86. // removed due to the way gulp=webpack works
  87. /*new DtsBundleWebpack({
  88. name: "babylonjs-inspector",
  89. main: path.resolve(__dirname, '../dist/preview release/inspector/build/index.d.ts'),
  90. out: path.resolve(__dirname, '../dist/preview release/inspector/babylon.inspector.module.d.ts'),
  91. baseDir: path.resolve(__dirname, '../dist/preview release/inspector/build/'),
  92. headerText: "BabylonJS Inspector"
  93. }),*/
  94. new webpack.WatchIgnorePlugin([
  95. /\.js$/,
  96. /\.d\.ts$/
  97. ]),
  98. new MiniCssExtractPlugin({
  99. // Options similar to the same options in webpackOptions.output
  100. // both options are optional
  101. filename: "[name].css",
  102. chunkFilename: "[id].css"
  103. })
  104. ],
  105. watchOptions: {
  106. ignored: [path.resolve(__dirname, './dist/**/*.*'), 'node_modules']
  107. }
  108. }