webpack.config.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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/index.ts'),
  10. },
  11. output: {
  12. path: path.resolve(__dirname, '../dist/preview release/inspector'),
  13. filename: 'babylon.inspector.min.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. new DtsBundleWebpack({
  84. name: "babylonjs-inspector",
  85. main: path.resolve(__dirname, '../dist/preview release/inspector/build/index.d.ts'),
  86. out: path.resolve(__dirname, '../dist/preview release/inspector/babylon.inspector.module.d.ts'),
  87. baseDir: path.resolve(__dirname, '../dist/preview release/inspector/build/'),
  88. headerText: "BabylonJS Inspector"
  89. }),
  90. new webpack.WatchIgnorePlugin([
  91. /\.js$/,
  92. /\.d\.ts$/
  93. ]),
  94. new MiniCssExtractPlugin({
  95. // Options similar to the same options in webpackOptions.output
  96. // both options are optional
  97. filename: "[name].css",
  98. chunkFilename: "[id].css"
  99. })
  100. ],
  101. watchOptions: {
  102. ignored: [path.resolve(__dirname, './dist/**/*.*'), 'node_modules']
  103. }
  104. }