@brandonkal/deno-quokka

0.2.0 • Public • Published

@brandonkal/deno-quokka

This npm module provides basic Quokka.js support for executing Deno files. This helps speed up development of Deno libraries such as yaml-tag.ts. It does this by injecting a mock Deno global module into your instrumented TypeScript files.

It should be used in combination with babel-plugin-deno which rewrites imports to use the cache directory.

Deno Quokka example with std/yaml

Config

Install Dependencies. We replace TypeScript compiler with Babel to strip types and rewrite imports:

npm i @babel/core babel-plugin-deno @brandonkal/deno-quokka @babel/plugin-syntax-import-meta @babel/plugin-syntax-top-level-await @babel/plugin-transform-typescript @babel/preset-env @babel/register @babel/cli

In your `~/.quokka/config.json file:

{
  "pro": true,
  "babel": {
    "ts": true,
    "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]],
    "plugins": [
      "deno",
      "@babel/plugin-syntax-import-meta",
      "@babel/plugin-syntax-top-level-await",
      ["@babel/plugin-transform-typescript", { "allowNamespaces": true }]
    ]
  },
  "plugins": ["@brandonkal/deno-quokka"]
}

Caveats

  • import.meta does not function because node still does not support ESM completely.
  • Top Level await is not available. Just wrap everything in an async function main()

How it is done

The work here is rather simple. Run deno types > src/deno-bridge.ts. Then remove all code not in the Deno namespace and flatten the file. Change export let to export const and manually add implementations for each function. Compile with npx tsc src/deno-bridge.ts. This should be enough to keep the Deno compiler from complaining. If your imported code actually makes extensive use of the Deno API, then please contribute a more robust polyfill here.

License

© 2020 Brandon Kalinowski. All Rights Reserved. MIT.

Dependencies (0)

    Dev Dependencies (0)

      Package Sidebar

      Install

      npm i @brandonkal/deno-quokka

      Weekly Downloads

      1

      Version

      0.2.0

      License

      MIT

      Unpacked Size

      108 kB

      Total Files

      5

      Last publish

      Collaborators

      • brandonkal