// Copyright (C) 2020 Intel Corporation // // SPDX-License-Identifier: MIT // eslint-disable-next-line @typescript-eslint/no-var-requires const path = require('path'); // eslint-disable-next-line @typescript-eslint/no-var-requires const DtsBundleWebpack = require('dts-bundle-webpack'); const nodeConfig = { target: 'node', mode: 'production', devtool: 'source-map', entry: './src/typescript/canvas.ts', output: { path: path.resolve(__dirname, 'dist'), filename: 'cvat-canvas.node.js', library: 'canvas', libraryTarget: 'commonjs', }, resolve: { extensions: ['.ts', '.js', '.json'], }, module: { rules: [ { test: /\.ts$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { plugins: [ '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-optional-chaining', ], presets: [['@babel/preset-env'], ['@babel/typescript']], sourceType: 'unambiguous', }, }, }, { test: /\.(css|scss)$/, exclude: /node_modules/, use: [ 'style-loader', { loader: 'css-loader', options: { importLoaders: 2, }, }, 'postcss-loader', 'sass-loader', ], }, ], }, plugins: [ new DtsBundleWebpack({ name: 'cvat-canvas.node', main: 'dist/declaration/src/typescript/canvas.d.ts', out: '../cvat-canvas.node.d.ts', }), ], }; const webConfig = { target: 'web', mode: 'production', devtool: 'source-map', entry: { 'cvat-canvas': './src/typescript/canvas.ts', }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].[contenthash].js', library: 'canvas', libraryTarget: 'window', }, devServer: { contentBase: path.join(__dirname, 'dist'), compress: false, inline: true, port: 3000, }, resolve: { extensions: ['.ts', '.js', '.json'], }, module: { rules: [ { test: /\.ts$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { plugins: ['@babel/plugin-proposal-class-properties'], presets: [ [ '@babel/preset-env', { targets: '> 2.5%', // https://github.com/browserslist/browserslist }, ], ['@babel/typescript'], ], sourceType: 'unambiguous', }, }, }, { test: /\.scss$/, exclude: /node_modules/, use: [ 'style-loader', { loader: 'css-loader', options: { importLoaders: 2, }, }, 'postcss-loader', 'sass-loader', ], }, ], }, plugins: [ new DtsBundleWebpack({ name: 'cvat-canvas', main: 'dist/declaration/src/typescript/canvas.d.ts', out: '../cvat-canvas.d.ts', }), ], }; module.exports = [webConfig, nodeConfig];