Как скомпилировать плагин Fable VS Code с Webpack? - PullRequest
0 голосов
/ 15 апреля 2020
module App

open Fable.Import

let activate (ctx : vscode.ExtensionContext) =
    printfn """Congratulations, your extension "fable-vscode-helloworld" is now active!"""

    vscode.commands.registerCommand("extension.helloWorld", fun _ ->
        let _ = vscode.window.showInformationMessage("Hello World!",[||])
        null
        )
    |> ctx.subscriptions.Add

let deactivate () = ()

Для вышеуказанного необходим пакет Fable.Import.VSCode. Я успешно компилировал выше с fable-splitter благодаря инструкциям здесь , но я хотел бы придерживаться одной схемы компиляции, поэтому я хочу, чтобы это компилировалось также с webpack .

var path = require("path");

module.exports = {
    mode: "development",
    entry: "./src/App.fsproj",
    output: {
        path: path.join(__dirname, "./public"),
        filename: "bundle.js",
    },
    devServer: {
        publicPath: "/",
        contentBase: "./public",
        port: 8080,
    },
    module: {
        rules: [{
            test: /\.fs(x|proj)?$/,
            use: "fable-loader"
        }]
    }
}

Вот мой webpack.config.js. Шаблон, который я использую для проекта, является стандартным из документов Fable.

ERROR in ./src/App.fs
Module not found: Error: Can't resolve 'vscode' in 'E:\Webdev\Fable\js-test\src'
 @ ./src/App.fs 2:0-53 6:16-24 7:4-11
 @ ./src/App.fsproj

Когда я пытаюсь создать его с webpack, он жалуется, что не может разрешить vscode. Что мне здесь делать?

1 Ответ

1 голос
/ 15 апреля 2020

Вам необходимо объявить vscode как внешнюю зависимость, чтобы Webpack знал, что он не должен пытаться связать расширение непосредственно в вашем коде. VSCode будет включен во время выполнения при необходимости.

Вам необходимо добавить это к вашему webpack.config.js.

  externals: {
    "vscode": "commonjs vscode",
  }

...