| // Copyright 2022 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| 'use strict'; |
| |
| const path = require('path'); |
| // eslint-disable-next-line @typescript-eslint/naming-convention |
| const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
| |
| |
| const extensionConfig = { |
| // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ |
| target: 'node', |
| |
| // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ |
| entry: { |
| extension: './src/extension.ts', |
| }, |
| |
| // the bundle is stored in the 'dist' folder (check package.json), |
| // 📖 -> https://webpack.js.org/configuration/output/ |
| output: { |
| path: path.join(__dirname, 'dist'), |
| filename: 'extension.js', |
| libraryTarget: 'commonjs2', |
| devtoolModuleFilenameTemplate: '../[resource-path]', |
| }, |
| devtool: 'source-map', |
| externals: { |
| // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot |
| // be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ |
| vscode: 'commonjs vscode' |
| }, |
| // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader |
| resolve: { |
| extensions: ['.ts', '.js'] |
| }, |
| module: { |
| rules: [{ |
| include: path.join(__dirname, 'src'), |
| exclude: /node_modules/, |
| test: /\.ts$/, |
| use: [{ |
| loader: 'ts-loader', |
| options: { |
| configFile: path.join(__dirname, 'tsconfig.json'), |
| } |
| }] |
| }] |
| }, |
| }; |
| |
| const webviewsConfig = { |
| name: 'webviews', |
| entry: { |
| // If new webviews are created, they must be added here. |
| 'webview-logging': './webviews/logging/index.ts', |
| }, |
| target: 'web', |
| devtool: 'source-map', |
| output: { |
| filename: '[name].js', |
| path: path.join(__dirname, 'dist'), |
| }, |
| resolve: { |
| extensions: ['.ts', '.js'], |
| }, |
| module: { |
| rules: [ |
| { |
| exclude: /node_modules/, |
| include: path.join(__dirname, 'webviews'), |
| test: /\.ts$/, |
| use: { |
| loader: 'ts-loader', |
| options: { |
| configFile: path.join(__dirname, 'tsconfig.webviews.json'), |
| } |
| }, |
| }, |
| { |
| test: /\.css/, |
| use: [MiniCssExtractPlugin.loader, 'css-loader'], |
| } |
| ], |
| }, |
| plugins: [new MiniCssExtractPlugin()], |
| }; |
| |
| module.exports = [ |
| extensionConfig, |
| webviewsConfig, |
| ]; |