Как веб-пакет vscode-nls

#webpack #vscode-extensions

#webpack #vscode-расширения

Вопрос:

Webpack выдает ошибки для двух моих импортированных файлов.

Импорт выглядит следующим образом.

 import * as vscode from 'vscode';
import * as hljs from "highlight.js";
import { readFileSync, writeFileSync } from 'fs';
import * as http from "http";
import * as child_process from "child_process";
import * as fs from "fs";
import * as portfinder from "portfinder";
import * as nls from 'vscode-nls';
  

Первые шесть обрабатываются без инцидентов, но webpack искажается с течением portfinder vscode-nls времени.

 > webpack --mode development

Hash: c7d673027a6e241aeb30
Version: webpack 4.44.2
Time: 2503ms
Built at: 11/05/2020 1:23:55 PM
           Asset      Size  Chunks                   Chunk Names
    extension.js  1.23 MiB    main  [emitted]        main
extension.js.map  1.35 MiB    main  [emitted] [dev]  main
Entrypoint main = extension.js extension.js.map
[./src/extension.ts] 15.4 KiB {main} [built] [2 errors]
[child_process] external "child_process" 42 bytes {main} [built]
[fs] external "fs" 42 bytes {main} [built]
[http] external "http" 42 bytes {main} [built]
[net] external "net" 42 bytes {main} [built]
[os] external "os" 42 bytes {main} [built]
[path] external "path" 42 bytes {main} [built]
[tty] external "tty" 42 bytes {main} [built]
[util] external "util" 42 bytes {main} [built]
[vscode] external "vscode" 42 bytes {main} [built]
      196 hidden modules

ERROR in D:_vscode-printing-freevsc-printsrcextension.ts
./src/extension.ts
[tsl] ERROR in D:_vscode-printing-freevsc-printsrcextension.ts(7,29)
      TS2307: Cannot find module 'portfinder'.
npm ERR! vscode-print@0.7.17 webpack: `webpack --mode development`
npm ERR! Exit status 2
  

Portfinder не является реальной проблемой; не было бы большой проблемой взять код и создать из него модуль ES6, что, вероятно, также помешало бы Typescript решить, что PortNumber доступен только для чтения (этого не должно быть).

Я нашел это по этому вопросу https://github.com/Microsoft/vscode-extension-samples/tree/master/webpack-sample#more

Если вы используете vscode-nls для локализации своего расширения, вы, вероятно, также используете vscode-nls-dev для создания языковых пакетов во время сборки. Для поддержки webpack в vscode-nls-dev добавлен загрузчик. Добавьте раздел ниже в модули / правила-конфигурация.

 {
  // vscode-nls-dev loader:
  // * rewrite nls-calls
  loader: 'vscode-nls-dev/lib/webpack-loader',
  options: {
    base: path.join(__dirname, 'src')
}
  

но я уже сделал то, что он советует. Самое интересное в этой информации — это прямое указание на то, что webpack и vscode-nls могут использоваться вместе. Менее обнадеживает то, что последние несколько выпусков vscode-nls связаны с тем, чтобы заставить это работать, что предполагает, что это не совсем просто.

Кто-нибудь знает о репозитории, который демонстрирует эту комбинацию технологий? Набросок того, что влечет за собой, подкрепленный ссылкой на рабочий репозиторий, был бы большим подспорьем.

Комментарии:

1. Привет @peter-wone, интересно, получилось ли у вас это работать?

Ответ №1:

к сожалению, vscode-nls-dev не поддерживает создание и объединение языкового файла (см. Это)

используйте gulp, если вы хотите использовать новый язык. Или вы можете развернуть webpack-loader.ts и webpack-bundler.ts введите описание ссылки здесь