mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-04-27 16:55:44 +08:00
- Removes test related code since there are no tests - Removes client/renderer split since there is only a renderer - Simplify webpack logic to align with our webpack sample - Document in top level readme and improve docs
65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
const { DefinePlugin } = require('webpack');
|
|
const path = require('path');
|
|
|
|
const outputFilename = 'index.js';
|
|
const devServerPort = 8111;
|
|
|
|
module.exports = (env, argv) => ({
|
|
mode: argv.mode,
|
|
devtool: argv.mode === 'production' ? false : 'inline-source-map',
|
|
entry: './src/index.ts',
|
|
output: {
|
|
path: path.join(__dirname, 'out'),
|
|
filename: outputFilename,
|
|
publicPath: '',
|
|
libraryTarget: 'module',
|
|
},
|
|
resolve: {
|
|
extensions: ['.ts', '.tsx', '.js', '.jsx', '.css'],
|
|
},
|
|
experiments: {
|
|
outputModule: true,
|
|
},
|
|
module: {
|
|
rules: [
|
|
// Allow importing ts(x) files:
|
|
{
|
|
test: /\.tsx?$/,
|
|
loader: 'ts-loader',
|
|
options: {
|
|
configFile: path.join(__dirname, 'tsconfig.json'),
|
|
// transpileOnly enables hot-module-replacement
|
|
transpileOnly: true,
|
|
compilerOptions: {
|
|
// Overwrite the noEmit from the client's tsconfig
|
|
noEmit: false,
|
|
},
|
|
},
|
|
},
|
|
// Allow importing CSS modules:
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
'style-loader',
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
importLoaders: 1,
|
|
modules: true,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new DefinePlugin({
|
|
// Path from the output filename to the output directory
|
|
__webpack_relative_entrypoint_to_root__: JSON.stringify(
|
|
path.posix.relative(path.posix.dirname(`/${outputFilename}`), '/'),
|
|
),
|
|
scriptUrl: 'import.meta.url',
|
|
}),
|
|
],
|
|
});
|