diff --git a/extensions/html-language-features/.vscodeignore b/extensions/html-language-features/.vscodeignore
index fe4f2396293..8d0ba59e94c 100644
--- a/extensions/html-language-features/.vscodeignore
+++ b/extensions/html-language-features/.vscodeignore
@@ -1,10 +1,27 @@
test/**
.vscode/**
-server/tsconfig.json
-server/src/**
-server/test/**
-server/out/test/**
-client/tsconfig.json
+server/.vscode/**
+node_modules/**
+server/node_modules/**
client/src/**
-**/node_modules/*/lib/esm/**
-**/node_modules/@types/**
\ No newline at end of file
+server/src/**
+client/out/**
+server/out/**
+client/tsconfig.json
+server/tsconfig.json
+server/test/**
+server/bin/**
+server/build/**
+server/yarn.lock
+server/.npmignore
+yarn.lock
+server/extension.webpack.config.js
+extension.webpack.config.js
+!node_modules/vscode-nls/**
+!node_modules/applicationinsights/**
+!node_modules/diagnostic-channel-publishers/**
+!node_modules/diagnostic-channel/**
+!node_modules/semver/**
+!node_modules/vscode-extension-telemetry/**
+!node_modules/zone.js/**
+!server/node_modules/vscode-nls/**
\ No newline at end of file
diff --git a/extensions/html-language-features/client/src/htmlMain.ts b/extensions/html-language-features/client/src/htmlMain.ts
index 68f8b881d3b..589c3afbf92 100644
--- a/extensions/html-language-features/client/src/htmlMain.ts
+++ b/extensions/html-language-features/client/src/htmlMain.ts
@@ -5,6 +5,7 @@
'use strict';
import * as path from 'path';
+import * as fs from 'fs';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
@@ -33,8 +34,9 @@ export function activate(context: ExtensionContext) {
let packageInfo = getPackageInfo(context);
telemetryReporter = packageInfo && new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey);
- // The server is implemented in node
- let serverModule = context.asAbsolutePath(path.join('server', 'out', 'htmlServerMain.js'));
+ let serverMain = readJSONFile(context.asAbsolutePath('./server/package.json')).main;
+ let serverModule = context.asAbsolutePath(path.join('server', serverMain));
+
// The debug options for the server
let debugOptions = { execArgv: ['--nolazy', '--inspect=6045'] };
@@ -157,7 +159,7 @@ export function activate(context: ExtensionContext) {
}
function getPackageInfo(context: ExtensionContext): IPackageInfo | null {
- let extensionPackage = require(context.asAbsolutePath('./package.json'));
+ let extensionPackage = readJSONFile(context.asAbsolutePath('./package.json'));
if (extensionPackage) {
return {
name: extensionPackage.name,
@@ -168,6 +170,16 @@ function getPackageInfo(context: ExtensionContext): IPackageInfo | null {
return null;
}
+
+function readJSONFile(location: string) {
+ try {
+ return JSON.parse(fs.readFileSync(location).toString());
+ } catch (e) {
+ console.log(`Problems reading ${location}: ${e}`);
+ return {};
+ }
+}
+
export function deactivate(): Promise {
return telemetryReporter ? telemetryReporter.dispose() : Promise.resolve(null);
}
\ No newline at end of file
diff --git a/extensions/html-language-features/extension.webpack.config.js b/extensions/html-language-features/extension.webpack.config.js
new file mode 100644
index 00000000000..492a0d1f8fd
--- /dev/null
+++ b/extensions/html-language-features/extension.webpack.config.js
@@ -0,0 +1,40 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+//@ts-check
+
+'use strict';
+
+const withDefaults = require('../shared.webpack.config');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const path = require('path');
+
+module.exports = withDefaults({
+ context: path.join(__dirname, 'client'),
+ entry: {
+ extension: './src/htmlMain.ts',
+ },
+ resolve: {
+ mainFields: ['module', 'main'],
+ extensions: ['.ts', '.js'] // support ts-files and js-files
+ },
+ node: {
+ __dirname: false // leave the __dirname-behaviour intact
+ },
+ output: {
+ filename: 'htmlMain.js',
+ path: path.join(__dirname, 'client', 'dist'),
+ libraryTarget: "commonjs",
+ },
+ externals: {
+ './files': 'commonjs', // ignored because it doesn't exist
+ },
+ plugins: [
+ new CopyWebpackPlugin([
+ { from: './out/*.sh', to: '[name].sh' },
+ { from: './out/nls.*.json', to: '[name].json' }
+ ])
+ ]
+});
diff --git a/extensions/html-language-features/package.json b/extensions/html-language-features/package.json
index e55530df063..58228fa32f8 100644
--- a/extensions/html-language-features/package.json
+++ b/extensions/html-language-features/package.json
@@ -174,10 +174,10 @@
},
"dependencies": {
"vscode-extension-telemetry": "0.0.18",
- "vscode-languageclient": "^4.4.0",
+ "vscode-languageclient": "^5.1.0-next.4",
"vscode-nls": "^3.2.4"
},
"devDependencies": {
"@types/node": "^8.10.25"
}
-}
+}
\ No newline at end of file
diff --git a/extensions/html-language-features/server/build/filesFillIn.js b/extensions/html-language-features/server/build/filesFillIn.js
new file mode 100644
index 00000000000..906617384e0
--- /dev/null
+++ b/extensions/html-language-features/server/build/filesFillIn.js
@@ -0,0 +1,5 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+module.exports = {};
\ No newline at end of file
diff --git a/extensions/html-language-features/server/extension.webpack.config.js b/extensions/html-language-features/server/extension.webpack.config.js
new file mode 100644
index 00000000000..e6c50b131db
--- /dev/null
+++ b/extensions/html-language-features/server/extension.webpack.config.js
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+//@ts-check
+
+'use strict';
+
+const withDefaults = require('../../shared.webpack.config');
+const path = require('path');
+var webpack = require('webpack');
+
+module.exports = withDefaults({
+ context: path.join(__dirname),
+ entry: {
+ extension: './src/htmlServerMain.ts',
+ },
+ resolve: {
+ mainFields: ['module', 'main'],
+ extensions: ['.ts', '.js'] // support ts-files and js-files
+ },
+ node: {
+ __dirname: false // leave the __dirname-behaviour intact
+ },
+ output: {
+ filename: 'htmlServerMain.js',
+ path: path.join(__dirname, 'dist'),
+ libraryTarget: "commonjs",
+ },
+ externals: {
+ 'typescript': 'commonjs typescript',
+ "vscode-nls": 'commonjs vscode-nls',
+ },
+ plugins: [
+ new webpack.NormalModuleReplacementPlugin(
+ /\/vscode-languageserver\/lib\/files\.js/,
+ require.resolve('./build/filesFillIn')
+ ),
+ new webpack.IgnorePlugin(/vertx/)
+ ],
+});
diff --git a/extensions/html-language-features/server/package.json b/extensions/html-language-features/server/package.json
index 9d4b15d815b..f58370909f2 100644
--- a/extensions/html-language-features/server/package.json
+++ b/extensions/html-language-features/server/package.json
@@ -7,10 +7,11 @@
"engines": {
"node": "*"
},
+ "main": "./out/htmlServerMain",
"dependencies": {
"vscode-css-languageservice": "^3.0.9",
"vscode-html-languageservice": "^2.1.3",
- "vscode-languageserver": "^4.4.0",
+ "vscode-languageserver": "^5.1.0-next.3",
"vscode-languageserver-types": "^3.10.0",
"vscode-nls": "^3.2.4",
"vscode-uri": "^1.0.5"
@@ -32,4 +33,4 @@
"install-server-local": "npm install ../../../../vscode-languageserver-node/server -f",
"test": "npm run compile && ../../../node_modules/.bin/mocha"
}
-}
+}
\ No newline at end of file
diff --git a/extensions/html-language-features/server/yarn.lock b/extensions/html-language-features/server/yarn.lock
index d642e6bb321..8090a9ec2ce 100644
--- a/extensions/html-language-features/server/yarn.lock
+++ b/extensions/html-language-features/server/yarn.lock
@@ -213,32 +213,32 @@ vscode-jsonrpc@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz#3b5eef691159a15556ecc500e9a8a0dd143470c8"
-vscode-languageserver-protocol@^3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.10.0.tgz#f8dcdf987687f64a26e7c32d498fc781a0e886dc"
+vscode-languageserver-protocol@^3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.12.0.tgz#5b23501292abad88f0463b01e83ff98e64a37652"
dependencies:
vscode-jsonrpc "^3.6.2"
- vscode-languageserver-types "^3.10.0"
+ vscode-languageserver-types "^3.12.0"
vscode-languageserver-types@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.10.0.tgz#944e5308f3b36a3f372c766f1a344e903ec9c389"
-vscode-languageserver@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-4.4.0.tgz#b6e8b37a739ccb629d92f3635f0099d191c856fa"
+vscode-languageserver-types@^3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.12.0.tgz#f96051381b6a050b7175b37d6cb5d2f2eb64b944"
+
+vscode-languageserver@^5.1.0-next.3:
+ version "5.1.0-next.3"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.1.0-next.3.tgz#352ce1f0f8bdfc47c1236277ebe865e25b087ccd"
dependencies:
- vscode-languageserver-protocol "^3.10.0"
- vscode-uri "^1.0.3"
+ vscode-languageserver-protocol "^3.12.0"
+ vscode-uri "^1.0.5"
vscode-nls@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-3.2.4.tgz#2166b4183c8aea884d20727f5449e62be69fd398"
-vscode-uri@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.3.tgz#631bdbf716dccab0e65291a8dc25c23232085a52"
-
vscode-uri@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.5.tgz#3b899a8ef71c37f3054d79bdbdda31c7bf36f20d"
diff --git a/extensions/html-language-features/yarn.lock b/extensions/html-language-features/yarn.lock
index f6e965d98ea..3f7b93cdfbe 100644
--- a/extensions/html-language-features/yarn.lock
+++ b/extensions/html-language-features/yarn.lock
@@ -24,9 +24,9 @@ diagnostic-channel@0.2.0:
dependencies:
semver "^5.3.0"
-semver@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+semver@^5.3.0, semver@^5.5.0:
+ version "5.5.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
vscode-extension-telemetry@0.0.18:
version "0.0.18"
@@ -38,22 +38,23 @@ vscode-jsonrpc@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz#3b5eef691159a15556ecc500e9a8a0dd143470c8"
-vscode-languageclient@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.4.0.tgz#b05868f6477b6f0c9910b24daae4f3e8c4b65902"
+vscode-languageclient@^5.1.0-next.4:
+ version "5.1.0-next.4"
+ resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-5.1.0-next.4.tgz#2f96b4aa198c45f3e897b7f330c597a401ca95f2"
dependencies:
- vscode-languageserver-protocol "^3.10.0"
+ semver "^5.5.0"
+ vscode-languageserver-protocol "^3.12.0"
-vscode-languageserver-protocol@^3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.10.0.tgz#f8dcdf987687f64a26e7c32d498fc781a0e886dc"
+vscode-languageserver-protocol@^3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.12.0.tgz#5b23501292abad88f0463b01e83ff98e64a37652"
dependencies:
vscode-jsonrpc "^3.6.2"
- vscode-languageserver-types "^3.10.0"
+ vscode-languageserver-types "^3.12.0"
-vscode-languageserver-types@^3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.10.0.tgz#944e5308f3b36a3f372c766f1a344e903ec9c389"
+vscode-languageserver-types@^3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.12.0.tgz#f96051381b6a050b7175b37d6cb5d2f2eb64b944"
vscode-nls@^3.2.4:
version "3.2.4"