webpack.config.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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, './src/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: "ts-loader",
  59. exclude: /node_modules/
  60. },
  61. {
  62. test: /\.scss$/,
  63. use: [
  64. // fallback to style-loader in development
  65. process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader,
  66. "css-loader",
  67. "sass-loader"
  68. ]
  69. }]
  70. },
  71. mode: "production",
  72. devServer: {
  73. contentBase: path.join(__dirname, "dist"),
  74. compress: false,
  75. //open: true,
  76. port: 9000
  77. },
  78. plugins: [
  79. new CleanWebpackPlugin([
  80. path.resolve(__dirname, './src/**/*.js'),
  81. path.resolve(__dirname, './src/**/*.map')
  82. ]),
  83. // removed due to the way gulp=webpack works
  84. /*new DtsBundleWebpack({
  85. name: "babylonjs-inspector",
  86. main: path.resolve(__dirname, '../dist/preview release/inspector/build/index.d.ts'),
  87. out: path.resolve(__dirname, '../dist/preview release/inspector/babylon.inspector.module.d.ts'),
  88. baseDir: path.resolve(__dirname, '../dist/preview release/inspector/build/'),
  89. headerText: "BabylonJS Inspector"
  90. }),*/
  91. new webpack.WatchIgnorePlugin([
  92. /\.js$/,
  93. /\.d\.ts$/
  94. ]),
  95. new MiniCssExtractPlugin({
  96. // Options similar to the same options in webpackOptions.output
  97. // both options are optional
  98. filename: "[name].css",
  99. chunkFilename: "[id].css"
  100. })
  101. ],
  102. watchOptions: {
  103. ignored: [path.resolve(__dirname, './dist/**/*.*'), 'node_modules']
  104. }
  105. }