run webpack in code-dev

This commit is contained in:
Martin Aeschlimann 2020-05-26 18:15:01 +02:00
parent f9bb157b09
commit d1a3e6ede6
7 changed files with 68 additions and 18 deletions

5
.vscode/launch.json vendored
View file

@ -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

View file

@ -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, {});
}

View file

@ -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')
}
});

View file

@ -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",

View file

@ -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==

View file

@ -10,7 +10,7 @@
"onFileSystem:memfs",
"onDebug"
],
"main": "./out/extension",
"browser": "./out/extension",
"engines": {
"vscode": "^1.25.0"
},

View file

@ -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` }}));