// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. 'use strict'; import webpack from 'webpack'; import {resolve} from 'node:path'; import {DEFAULT_ES_VERSION, addCopyrightBannerPlugin} from '../webpack.shared.mjs'; function buildConfig({ suffix = '.js', // '.js', '.min.js', ... format = 'umd', // 'umd', 'commonjs' target = 'web', // 'web', 'node' esVersion = DEFAULT_ES_VERSION, // 'es5', 'es6', ... mode = 'production', // 'development', 'production' devtool = 'source-map' // 'inline-source-map', 'source-map' }) { // output file name const filename = `ort-common${suffix}`; // variable name of the exported object. // - set to 'ort' when building 'umd' format. // - set to undefined when building other formats (commonjs/module) const exportName = format === 'umd' ? 'ort' : undefined; return { target: [target, esVersion], entry: resolve('./lib/index.ts'), output: { path: resolve('./dist'), filename, library: {name: exportName, type: format}, }, resolve: { extensions: ['.ts', '.js'], extensionAlias: {'.js': ['.ts', '.js']}, }, plugins: [ new webpack.WatchIgnorePlugin({paths: [/\.js$/, /\.d\.ts$/]}), addCopyrightBannerPlugin(mode, 'common', esVersion), ], module: { rules: [{ test: /\.ts$/, use: [{ loader: 'ts-loader', options: {compilerOptions: {target: esVersion}}, }] }] }, mode, devtool, }; } export default (env, argv) => { return [ buildConfig({suffix: '.es5.min.js', target: 'web', esVersion: 'es5'}), buildConfig({suffix: '.min.js'}), buildConfig({mode: 'development', devtool: 'inline-source-map'}), buildConfig({ suffix: '.node.cjs', target: 'node', format: 'commonjs', }), ]; };