Raanan Weber 7 年 前
コミット
ad439a2a55
3 ファイル変更140 行追加16 行削除
  1. 46 0
      inspector/package.json
  2. 6 0
      inspector/tsconfig.json
  3. 88 16
      inspector/webpack.config.js

+ 46 - 0
inspector/package.json

@@ -0,0 +1,46 @@
+{
+    "name": "babylonjs-inspector",
+    "version": "1.0.0",
+    "description": "",
+    "scripts": {
+        "start:server": "webpack-dev-server",
+        "start:watch": "webpack -w",
+        "build:dev": "webpack",
+        "build:prod": "webpack --mode=production",
+        "test": "echo \"Error: no test specified\" && exit 1"
+    },
+    "repository": {
+        "type": "git",
+        "url": "git+https://github.com/BabylonJS/Babylon.js.git"
+    },
+    "keywords": [
+        "3d",
+        "webgl",
+        "viewer"
+    ],
+    "license": "Apache2",
+    "bugs": {
+        "url": "https://github.com/BabylonJS/Babylon.js/issues"
+    },
+    "homepage": "https://github.com/BabylonJS/Babylon.js#readme",
+    "devDependencies": {
+        "@types/node": "^10.5.2",
+        "css-loader": "^1.0.0",
+        "dts-bundle-webpack": "^1.0.0",
+        "mini-css-extract-plugin": "^0.4.1",
+        "node-sass": "^4.9.2",
+        "sass-loader": "^7.0.3",
+        "style-loader": "^0.21.0",
+        "ts-loader": "^4.0.0",
+        "typescript": "^2.9.2",
+        "webpack": "^4.16.0",
+        "webpack-cli": "^3.0.8",
+        "webpack-dev-server": "^3.1.4"
+    },
+    "peerDependencies": {
+        "babylonjs": ">3.2.0",
+        "babylonjs-gui": ">3.2.0",
+        "babylonjs-loaders": ">3.2.0"
+    },
+    "dependencies": {}
+}

+ 6 - 0
inspector/tsconfig.json

@@ -27,6 +27,12 @@
             ],
             "babylonjs-gui": [
                 "../../dist/preview release/gui/babylon.gui.module.d.ts"
+            ],
+            "babylonjs-loaders": [
+                "../../dist/preview release/loaders/babylonjs.loaders.module.d.ts"
+            ],
+            "babylonjs-serializers": [
+                "../../dist/preview release/serializers/babylonjs.serializers.module.d.ts"
             ]
         },
         "outDir": "./build"

+ 88 - 16
inspector/webpack.config.js

@@ -1,29 +1,101 @@
 const path = require('path');
+const webpack = require('webpack');
+const DtsBundleWebpack = require('dts-bundle-webpack')
+const MiniCssExtractPlugin = require("mini-css-extract-plugin");
 
 module.exports = {
-    //context: __dirname,
-    entry: [
-        path.resolve(__dirname, "../dist/preview release/inspector/babylon.inspector.css"),
-        path.resolve(__dirname, "../dist/preview release/inspector/babylon.inspector.js")
-    ],
+    context: __dirname,
+    entry: {
+        'babylonjs-inspector': path.resolve(__dirname, './src/index.ts'),
+    },
     output: {
-        libraryTarget: "var",
-        library: "INSPECTOR",
+        path: path.resolve(__dirname, '../dist/preview release/inspector'),
+        filename: 'babylon.inspector.js',
+        libraryTarget: 'umd',
+        library: {
+            root: "INSPECTOR",
+            amd: "babylonjs-inspector",
+            commonjs: "babylonjs-inspector"
+        },
         umdNamedDefine: true
     },
     resolve: {
+        extensions: [".js", '.ts'],
         alias: {
-            split: '../split.js'
+            Split: path.resolve(__dirname, '../dist/preview release/split.js')
+        }
+    },
+    externals: {
+        babylonjs: {
+            root: "BABYLON",
+            commonjs: "babylonjs",
+            commonjs2: "babylonjs",
+            amd: "babylonjs"
+        },
+        "babylonjs-gui": {
+            root: ["BABYLON", "GUI"],
+            commonjs: "babylonjs-gui",
+            commonjs2: "babylonjs-gui",
+            amd: "babylonjs-gui"
+        },
+        "babylonjs-loaders": {
+            root: "BABYLON",
+            commonjs: "babylonjs-loaders",
+            commonjs2: "babylonjs-loaders",
+            amd: "babylonjs-loaders"
+        },
+        "babylonjs-serializers": {
+            root: "BABYLON",
+            commonjs: "babylonjs-serializers",
+            commonjs2: "babylonjs-serializers",
+            amd: "babylonjs-serializers",
+            optional: true
         }
     },
+    devtool: "source-map",
     module: {
-        rules: [
-            { test: /\.css$/, use: ['style-loader', 'css-loader'] },
-            {
-                test: /babylon.inspector.js/, use: [
-                    "imports-loader?Split=split", "exports-loader?INSPECTOR"]
-
-            }
-        ]
+        rules: [{
+            test: /\.tsx?$/,
+            loader: "ts-loader",
+            exclude: /node_modules/
+        },
+        {
+            test: /\.scss$/,
+            use: [
+                // fallback to style-loader in development
+                process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader,
+                "css-loader",
+                "sass-loader"
+            ]
+        }]
+    },
+    mode: "development",
+    devServer: {
+        contentBase: path.join(__dirname, "dist"),
+        compress: false,
+        //open: true,
+        port: 9000
+    },
+    plugins: [
+        new DtsBundleWebpack({
+            name: "babylonjs-inspector",
+            main: path.resolve(__dirname, '../dist/preview release/inspector/build/index.d.ts'),
+            out: path.resolve(__dirname, '../dist/preview release/inspector/babylon.inspector.module.d.ts'),
+            baseDir: path.resolve(__dirname, '../dist/preview release/inspector/build/'),
+            headerText: "BabylonJS Inspector"
+        }),
+        new webpack.WatchIgnorePlugin([
+            /\.js$/,
+            /\.d\.ts$/
+        ]),
+        new MiniCssExtractPlugin({
+            // Options similar to the same options in webpackOptions.output
+            // both options are optional
+            filename: "[name].css",
+            chunkFilename: "[id].css"
+        })
+    ],
+    watchOptions: {
+        ignored: [path.resolve(__dirname, './dist/**/*.*'), 'node_modules']
     }
 }