diff --git a/packages/compiler/src/babel-plugin/index.js b/packages/compiler/src/babel-plugin/index.js index 609e92779c..f47d9d3e79 100644 --- a/packages/compiler/src/babel-plugin/index.js +++ b/packages/compiler/src/babel-plugin/index.js @@ -9,21 +9,14 @@ import { buildLookup } from "../taglib"; export default (api, options) => { api.assertVersion(7); options.output = options.output || "html"; - options.translator = options.translator || "default"; const isProduction = api.env("production"); - let translator; + const translator = options.translator; - if (typeof window === "undefined") { - translator = require(`@marko/translator-${options.translator}`); - } else { - if (translator !== "default") { - throw new Error( - "@marko/compiler: only the default translator can be used in the browser." - ); - } - - translator = require("@marko/translator-default"); + if (!translator || !translator.visitor) { + throw new Error( + "@marko/compiler: translator must provide a visitor object" + ); } return { diff --git a/packages/compiler/src/config.js b/packages/compiler/src/config.js index 18bdfa2ac7..7c07cc9883 100644 --- a/packages/compiler/src/config.js +++ b/packages/compiler/src/config.js @@ -1,3 +1,5 @@ +import * as translator from "@marko/translator-default"; + let config; const globalThis = typeof window === "undefined" ? global : window; const MARKO_CONFIG_KEY = Symbol("Default Marko Compiler Config"); @@ -34,7 +36,12 @@ if (globalThis[MARKO_CONFIG_KEY]) { * You can also access this metadata via `compile(...).meta`. * This API is sticking around for compatibility purposes. */ - meta: false + meta: false, + + /** + * Allows configuring Marko to compile to different runtimes. + */ + translator }; if (process.env.MARKO_CONFIG) {