add a shared webpack conifg

This commit is contained in:
Johannes Rieken
2018-08-17 15:56:57 +02:00
parent 7c9b48b5a7
commit 1115196349
3 changed files with 63 additions and 67 deletions

View File

@@ -5,44 +5,14 @@
'use strict';
const path = require('path');
const sharedConfig = require('../shared.webpack.config');
module.exports = {
// mode: 'production',
// stats: 'errors-only',
mode: 'none',
context: __dirname,
target: 'node',
const myConfig = {
entry: {
extension: './src/extension.ts',
},
resolve: {
mainFields: ['main'],
extensions: [".ts", ".js"]
},
module: {
rules: [{
test: /\.ts$/,
exclude: /node_modules/,
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
compilerOptions: {
"sourceMap": true,
}
}
}]
}]
},
output: {
filename: '[name].js',
path: path.join(__dirname, 'dist'),
libraryTarget: "commonjs",
},
devtool: 'source-map',
externals: {
'vscode': 'commonjs vscode',
'vscode': 'commonjs vscode', // ignored because it doesn't exist
'@emmetio/css-parser': 'commonjs @emmetio/css-parser',
'@emmetio/html-matcher': 'commonjs @emmetio/html-matcher',
'@emmetio/math-expression': 'commonjs @emmetio/math-expression',
@@ -50,3 +20,5 @@ module.exports = {
'vscode-emmet-helper': 'commonjs vscode-emmet-helper',
},
};
module.exports = { ...sharedConfig(__dirname), ...myConfig };

View File

@@ -5,55 +5,25 @@
'use strict';
const path = require('path');
const sharedConfig = require('../shared.webpack.config');
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
// mode: 'production',
// stats: 'errors-only',
mode: 'none',
context: __dirname,
target: 'node',
const myConfig = {
node: {
__dirname: false
__dirname: false // leave the __dirname-behaviour intact
},
entry: {
main: './src/main.ts',
['askpass-main']: './src/askpass-main.ts'
},
resolve: {
mainFields: ['main'],
extensions: [".ts", ".js"]
},
module: {
rules: [{
test: /\.ts$/,
exclude: /node_modules/,
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
compilerOptions: {
"sourceMap": true,
}
}
}]
}]
},
output: {
filename: '[name].js',
path: path.join(__dirname, 'dist'),
libraryTarget: "commonjs"
},
plugins: [
new CopyWebpackPlugin([
{ from: './out/*.sh', to: '[name].sh' },
{ from: './out/nls.*.json', to: '[name].json' }
])
],
devtool: 'source-map',
externals: {
'vscode': 'commonjs vscode',
'vscode': 'commonjs vscode', // ignored because it doesn't exist
"byline": 'commonjs byline',
"file-type": 'commonjs file-type',
"iconv-lite": 'commonjs iconv-lite',
@@ -63,3 +33,5 @@ module.exports = {
"which": 'commonjs which',
},
};
module.exports = { ...sharedConfig(__dirname), ...myConfig };

View File

@@ -0,0 +1,52 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
const path = require('path');
/**
* Function that must be invoked with __dirname and that
* returns a good default configuation for extensions that
* want to do webpack
*/
module.exports = function (extensionDir) {
return {
context: extensionDir,
mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production')
target: 'node', // extensions run in a node context
resolve: {
mainFields: ['main'], // prefer the main-entry of package.json files
extensions: [".ts", ".js"] // support ts-files and js-files
},
module: {
rules: [{
// configure TypeScript loader:
// * only transpile because we have a separate compilation pipeline
// * enable sources maps for end-to-end source maps
test: /\.ts$/,
exclude: /node_modules/,
use: [{
loader: 'ts-loader',
options: {
transpileOnly: true,
compilerOptions: {
"sourceMap": true,
}
}
}]
}]
},
output: {
// all output goes into `dist`.
// packaging depends on that and this must always be like it
filename: '[name].js',
path: path.join(extensionDir, 'dist'),
libraryTarget: "commonjs",
},
// yes, really source maps
devtool: 'source-map'
};
};