From d1a3e6ede65a3d0559b5146b6d7fdaf5a0ad4ac3 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 26 May 2020 18:15:01 +0200 Subject: [PATCH] run webpack in code-dev --- .vscode/launch.json | 5 +-- .../src/browser/cssClientBrowserMain.ts | 15 ++++++++ .../extension-browser.webpack.config.js | 23 +++++++++++ extensions/css-language-features/package.json | 1 + .../css-language-features/server/yarn.lock | 2 +- extensions/vscode-web-playground/package.json | 2 +- scripts/code-web.js | 38 +++++++++++++------ 7 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 extensions/css-language-features/client/src/browser/cssClientBrowserMain.ts create mode 100644 extensions/css-language-features/extension-browser.webpack.config.js diff --git a/.vscode/launch.json b/.vscode/launch.json index 70ae4a7242d..72fd892dc3c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -217,10 +217,7 @@ "type": "node", "request": "launch", "name": "VS Code (Web)", - "runtimeExecutable": "yarn", - "runtimeArgs": [ - "web" - ], + "program": "${workspaceFolder}/scripts/code-web.js", "presentation": { "group": "0_vscode", "order": 2 diff --git a/extensions/css-language-features/client/src/browser/cssClientBrowserMain.ts b/extensions/css-language-features/client/src/browser/cssClientBrowserMain.ts new file mode 100644 index 00000000000..18e1d607a52 --- /dev/null +++ b/extensions/css-language-features/client/src/browser/cssClientBrowserMain.ts @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ExtensionContext, window } from 'vscode'; +//import { startClient } from '../cssClient'; + +// this method is called when vs code is activated +export function activate(_context: ExtensionContext) { + + window.showInformationMessage('cssClientBrowserMain.ts running'); + + //startClient(context, {}); +} diff --git a/extensions/css-language-features/extension-browser.webpack.config.js b/extensions/css-language-features/extension-browser.webpack.config.js new file mode 100644 index 00000000000..30a7fe23413 --- /dev/null +++ b/extensions/css-language-features/extension-browser.webpack.config.js @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------------------------- + * 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'); + +module.exports = withDefaults({ + target: 'webworker', + context: path.join(__dirname, 'client'), + entry: { + extension: './src/browser/cssClientBrowserMain.ts', + }, + output: { + filename: 'cssClientBrowserMain.js', + path: path.join(__dirname, 'client', 'dist', 'browser') + } +}); diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json index a96cfa56c5f..a02e79ecf6d 100644 --- a/extensions/css-language-features/package.json +++ b/extensions/css-language-features/package.json @@ -16,6 +16,7 @@ "onCommand:_css.applyCodeAction" ], "main": "./client/out/node/cssClientMain", + "browser": "./client/dist/browser/cssClientBrowserMain", "enableProposedApi": true, "scripts": { "compile": "gulp compile-extension:css-language-features-client compile-extension:css-language-features-server", diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock index b2188f181a1..2f639b86a16 100644 --- a/extensions/css-language-features/server/yarn.lock +++ b/extensions/css-language-features/server/yarn.lock @@ -701,7 +701,7 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -vscode-css-languageservice@^4.3.0-next.0: +vscode-css-languageservice@4.3.0-next.0: version "4.3.0-next.0" resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0-next.0.tgz#70ca6e192e1d7fb904867e696851b14401da9573" integrity sha512-OwYavU+gqocK3YQi484CrGkGMMRRmzJdeNMfgAr/SssKJVJuvkLec7NbAopM42KTE6OPaqU3AFgI5AMERmIJ4A== diff --git a/extensions/vscode-web-playground/package.json b/extensions/vscode-web-playground/package.json index 46b6102c10e..05fa8bdeb78 100644 --- a/extensions/vscode-web-playground/package.json +++ b/extensions/vscode-web-playground/package.json @@ -10,7 +10,7 @@ "onFileSystem:memfs", "onDebug" ], - "main": "./out/extension", + "browser": "./out/extension", "engines": { "vscode": "^1.25.0" }, diff --git a/scripts/code-web.js b/scripts/code-web.js index b208a1e908e..549de9019df 100755 --- a/scripts/code-web.js +++ b/scripts/code-web.js @@ -15,6 +15,8 @@ const util = require('util'); const opn = require('opn'); const minimist = require('minimist'); +const webpack = require("webpack"); + const APP_ROOT = path.dirname(__dirname); const EXTENSIONS_ROOT = path.join(APP_ROOT, 'extensions'); const WEB_MAIN = path.join(APP_ROOT, 'src', 'vs', 'code', 'browser', 'workbench', 'workbench-dev.html'); @@ -140,30 +142,42 @@ function handleStaticExtension(req, res, parsedUrl) { */ async function handleRoot(req, res) { const extensionFolders = await util.promisify(fs.readdir)(EXTENSIONS_ROOT); - const mapExtensionFolderToExtensionPackageJSON = new Map(); + + const staticExtensions = []; + + const webpackConfigs = []; await Promise.all(extensionFolders.map(async extensionFolder => { try { const packageJSON = JSON.parse((await util.promisify(fs.readFile)(path.join(EXTENSIONS_ROOT, extensionFolder, 'package.json'))).toString()); - if (packageJSON.main && packageJSON.name !== 'vscode-web-playground') { + if (packageJSON.main && !packageJSON.browser) { return; // unsupported } - packageJSON.extensionKind = ['web']; // enable for Web + if (packageJSON.browser) { + packageJSON.main = packageJSON.browser; + const webpackConfigPath = path.join(EXTENSIONS_ROOT, extensionFolder, 'extension-browser.webpack.config.js'); + if ((await util.promisify(fs.exists)(webpackConfigPath))) { + webpackConfigs.push(require(webpackConfigPath)); + packageJSON.main.replace('/out/', '/dist/'); + } + } - mapExtensionFolderToExtensionPackageJSON.set(extensionFolder, packageJSON); + packageJSON.extensionKind = ['web']; // enable for Web + staticExtensions.push({ + packageJSON, + extensionLocation: { scheme: SCHEME, authority: AUTHORITY, path: `/static-extension/${extensionFolder}` } + }); } catch (error) { return null; } })); - const staticExtensions = []; - - // Built in extensions - mapExtensionFolderToExtensionPackageJSON.forEach((packageJSON, extensionFolder) => { - staticExtensions.push({ - packageJSON, - extensionLocation: { scheme: SCHEME, authority: AUTHORITY, path: `/static-extension/${extensionFolder}` } - }); + webpack(webpackConfigs).watch({}, (err, stats) => { + if (err) { + console.log(err); + } else { + console.log(stats.toString()); + } }); const webConfiguration = escapeAttribute(JSON.stringify({ staticExtensions, folderUri: { scheme: 'memfs', path: `/sample-folder` }})); -- GitLab