Skip to content
Snippets Groups Projects
webpack.embedding-sdk-cli.config.js 1.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • const path = require("path");
    const webpack = require("webpack");
    const TerserPlugin = require("terser-webpack-plugin");
    
    const SDK_CLI_DIST_PATH = path.join(__dirname, "/resources/embedding-sdk/dist");
    
    const SDK_SRC_PATH = __dirname + "/enterprise/frontend/src/embedding-sdk";
    
    const SDK_CLI_PATH = path.join(
      __dirname,
      "/enterprise/frontend/src/embedding-sdk/cli",
    );
    
    
    const METABASE_SRC_PATH = path.join(__dirname, "/frontend/src/metabase");
    
    
    const BABEL_CONFIG = {
      cacheDirectory: process.env.BABEL_DISABLE_CACHE ? false : ".babel_cache",
    };
    
    module.exports = {
      mode: "production",
      entry: `${SDK_CLI_PATH}/cli.ts`,
      target: "node",
      context: SDK_CLI_PATH,
      output: {
        path: SDK_CLI_DIST_PATH,
        filename: "cli.js",
        library: { type: "commonjs2" },
      },
      resolve: {
        extensions: [".ts", ".js"],
    
        alias: {
          metabase: METABASE_SRC_PATH,
          "embedding-sdk": SDK_SRC_PATH,
        },
    
      },
      module: {
        rules: [
          {
            test: /\.(ts|js)$/,
            exclude: /node_modules/,
            use: [{ loader: "babel-loader", options: BABEL_CONFIG }],
          },
        ],
      },
      plugins: [
        new webpack.BannerPlugin({ banner: "#!/usr/bin/env node", raw: true }),
      ],
      optimization: {
        minimize: true,
        minimizer: [
          new TerserPlugin({
            terserOptions: { output: { comments: false } },
            extractComments: false,
          }),
        ],
      },
    };