• Stars
    star
    1,211
  • Rank 38,689 (Top 0.8 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Deno to npm package build tool.

dnt - Deno to Node Transform

deno doc

Deno to npm package build tool.

What does this do?

Takes a Deno module and creates an npm package for use in Node.js.

There are several steps done in a pipeline:

  1. Transforms Deno code to Node/canonical TypeScript including files found by deno test.
    • Rewrites module specifiers.
    • Injects shims for any Deno namespace or other global name usages as specified.
    • Rewrites Skypack and esm.sh specifiers to bare specifiers and includes these dependencies in a package.json.
    • When remote modules cannot be resolved to an npm package, it downloads them and rewrites specifiers to make them local.
    • Allows mapping any specifier to an npm package.
  2. Type checks the output.
  3. Emits ESM, CommonJS, and TypeScript declaration files along with a package.json file.
  4. Runs the final output in Node.js through a test runner calling all Deno.test calls.

Setup

  1. Create a build script file:

    // ex. scripts/build_npm.ts
    import { build, emptyDir } from "https://deno.land/x/dnt/mod.ts";
    
    await emptyDir("./npm");
    
    await build({
      entryPoints: ["./mod.ts"],
      outDir: "./npm",
      shims: {
        // see JS docs for overview and more options
        deno: true,
      },
      package: {
        // package.json properties
        name: "your-package",
        version: Deno.args[0],
        description: "Your package.",
        license: "MIT",
        repository: {
          type: "git",
          url: "git+https://github.com/username/repo.git",
        },
        bugs: {
          url: "https://github.com/username/repo/issues",
        },
      },
      postBuild() {
        // steps to run after building and before running the tests
        Deno.copyFileSync("LICENSE", "npm/LICENSE");
        Deno.copyFileSync("README.md", "npm/README.md");
      },
    });
  2. Ignore the output directory with your source control if you desire (ex. add npm/ to .gitignore).

  3. Run it and npm publish:

    # run script
    deno run -A scripts/build_npm.ts 0.1.0
    
    # go to output directory and publish
    cd npm
    npm publish

Example Build Logs

[dnt] Transforming...
[dnt] Running npm install...
[dnt] Building project...
[dnt] Type checking ESM...
[dnt] Emitting ESM package...
[dnt] Emitting script package...
[dnt] Running tests...

> test
> node test_runner.js

Running tests in ./script/mod.test.js...

test escapeWithinString ... ok
test escapeChar ... ok

Running tests in ./esm/mod.test.js...

test escapeWithinString ... ok
test escapeChar ... ok
[dnt] Complete!

Docs

Disabling Type Checking, Testing, Declaration Emit, or CommonJS/UMD Output

Use the following options to disable any one of these, which are enabled by default:

await build({
  // ...etc...
  typeCheck: false,
  test: false,
  declaration: false,
  scriptModule: false,
});

Type Checking Both ESM and Script Output

By default, only the ESM output will be type checked for performance reasons. That said, it's recommended to type check both the ESM and the script (CJS/UMD) output by setting typeCheck to "both":

await build({
  // ...etc...
  typeCheck: "both",
});

Ignoring Specific Type Checking Errors

Sometimes you may be getting a TypeScript error that is not helpful and you want to ignore it. This is possible by using the filterDiagnostic option:

await build({
  // ...etc...
  filterDiagnostic(diagnostic) {
    if (
      diagnostic.file?.fileName.endsWith("fmt/colors.ts")
    ) {
      return false; // ignore all diagnostics in this file
    }
    // etc... more checks here
    return true;
  },
});

This is especially useful for ignoring type checking errors in remote dependencies.

Top Level Await

Top level await doesn't work in CommonJS/UMD and dnt will error if a top level await is used and you are outputting CommonJS/UMD code. If you want to output a CommonJS/UMD package then you'll have to restructure your code to not use any top level awaits. Otherwise, set the scriptModule build option to false:

await build({
  // ...etc...
  scriptModule: false,
});

Shims

dnt will shim the globals specified in the build options. For example, if you specify the following build options:

await build({
  // ...etc...
  shims: {
    deno: true,
  },
});

Then write a statement like so...

Deno.readTextFileSync(...);

...dnt will create a shim file in the output, re-exporting the @deno/shim-deno npm shim package and change the Deno global to be used as a property of this object.

import * as dntShim from "./_dnt.shims.js";

dntShim.Deno.readTextFileSync(...);

Test-Only Shimming

If you want a shim to only be used in your test code as a dev dependency, then specify "dev" for the option.

For example, to use the Deno namespace only for development and the setTimeout and setInterval browser/Deno compatible shims in the distributed code, you would do:

await build({
  // ...etc...
  shims: {
    deno: "dev",
    timers: true,
  },
});

Preventing Shimming

To prevent shimming in specific instances, add a // dnt-shim-ignore comment:

// dnt-shim-ignore
Deno.readTextFileSync(...);

...which will now output that code as-is.

Built-In Shims

Set any of these properties to true (distribution and test) or "dev" (test only) to use them.

  • deno - Shim the Deno namespace.
  • timers - Shim the global setTimeout and setInterval functions with Deno and browser compatible versions.
  • prompts - Shim the global confirm, alert, and prompt functions.
  • blob - Shim the Blob global with the one from the "buffer" module.
  • crypto - Shim the crypto global.
  • domException - Shim the DOMException global using the "domexception" package (https://www.npmjs.com/package/domexception)
  • undici - Shim fetch, File, FormData, Headers, Request, and Response by using the "undici" package (https://www.npmjs.com/package/undici).
  • weakRef - Sham for the WeakRef global, which uses globalThis.WeakRef when it exists. The sham will throw at runtime when calling deref() and WeakRef doesn't globally exist, so this is only intended to help type check code that won't actually use it.
  • webSocket - Shim WebSocket by using the ws package.
Deno.test-only shim

If you only want to shim Deno.test then provide the following:

await build({
  // ...etc...
  shims: {
    deno: {
      test: "dev",
    },
  },
});

This may be useful in Node v14 and below where the full deno shim doesn't always work. See the section on Node v14 below for more details

Custom Shims (Advanced)

In addition to the pre-defined shim options, you may specify your own custom packages to use to shim globals.

For example:

await build({
  scriptModule: false, // node-fetch 3+ only supports ESM
  // ...etc...
  shims: {
    custom: [{
      package: {
        name: "node-fetch",
        version: "~3.1.0",
      },
      globalNames: [{
        // for the `fetch` global...
        name: "fetch",
        // use the default export of node-fetch
        exportName: "default",
      }, {
        name: "RequestInit",
        typeOnly: true, // only used in type declarations
      }],
    }, {
      // this is what `blob: true` does internally
      module: "buffer", // uses node's "buffer" module
      globalNames: ["Blob"],
    }, {
      // this is what `domException: true` does internally
      package: {
        name: "domexception",
        version: "^4.0.0",
      },
      typesPackage: {
        name: "@types/domexception",
        version: "^4.0.0",
      },
      globalNames: [{
        name: "DOMException",
        exportName: "default",
      }],
    }],
    // shims to only use in the tests
    customDev: [{
      // this is what `timers: "dev"` does internally
      package: {
        name: "@deno/shim-timers",
        version: "~0.1.0",
      },
      globalNames: ["setTimeout", "setInterval"],
    }],
  },
});

Local and Remote Shims

Custom shims can also refer to local or remote modules:

await build({
  // ...etc...
  shims: {
    custom: [{
      module: "./my-custom-fetch-implementation.ts",
      globalNames: ["fetch"],
    }, {
      module: "https://deno.land/x/some_remote_shim_module/mod.ts",
      globalNames: ["setTimeout"],
    }],
  },
});

Where my-custom-fetch-implementation.ts contains:

export function fetch(/* etc... */) {
  // etc...
}

This is useful in situations where you want to implement your own shim.

Specifier to npm Package Mappings

In most cases, dnt won't know about an npm package being available for one of your dependencies and will download remote modules to include in your package. There are scenarios though where an npm package may exist and you want to use it instead. This can be done by providing a specifier to npm package mapping.

For example:

await build({
  // ...etc...
  mappings: {
    "https://deno.land/x/[email protected]/mod.ts": {
      name: "code-block-writer",
      version: "^11.0.0",
      // optionally specify if this should be a peer dependency
      peerDependency: false,
    },
  },
});

This will:

  1. Change all "https://deno.land/x/[email protected]/mod.ts" specifiers to "code-block-writer"
  2. Add a package.json dependency for "code-block-writer": "^11.0.0".

Note that dnt will error if you specify a mapping and it is not found in the code. This is done to prevent the scenario where a remote specifier's version is bumped and the mapping isn't updated.

Mapping specifier to npm package subpath

Say an npm package called example had a subpath at sub_path.js and you wanted to map https://deno.land/x/[email protected]/sub_path.ts to that subpath. To specify this, you would do the following:

await build({
  // ...etc...
  mappings: {
    "https://deno.land/x/[email protected]/sub_path.ts": {
      name: "example",
      version: "^0.1.0",
      subPath: "sub_path.js", // note this
    },
  },
});

This would cause the following:

import * as mod from "https://deno.land/x/[email protected]/sub_path.ts";

...to go to...

import * as mod from "example/sub_path.js";

...with a dependency on "example": "^0.1.0".

Multiple Entry Points

To do this, specify multiple entry points like so (ex. an entry point at . and another at ./internal):

await build({
  entryPoints: ["mod.ts", {
    name: "./internal",
    path: "internal.ts",
  }],
  // ...etc...
});

This will create a package.json with these as exports:

{
  "name": "your-package",
  // etc...
  "main": "./script/mod.js",
  "module": "./esm/mod.js",
  "types": "./types/mod.d.ts",
  "exports": {
    ".": {
      "import": {
        "types": "./types/mod.d.ts",
        "default": "./esm/mod.js"
      },
      "require": {
        "types": "./types/mod.d.ts",
        "default": "./script/mod.js"
      }
    },
    "./internal": {
      "import": {
        "types": "./types/internal.d.ts",
        "default": "./esm/internal.js"
      },
      "require": {
        "types": "./types/internal.d.ts",
        "default": "./script/internal.js"
      }
    }
  }
}

Now these entry points could be imported like import * as main from "your-package" and import * as internal from "your-package/internal";.

Bin/CLI Packages

To publish an npm bin package similar to deno install, add a kind: "bin" entry point:

await build({
  entryPoints: [{
    kind: "bin",
    name: "my_binary", // command name
    path: "./cli.ts",
  }],
  // ...etc...
});

This will add a "bin" entry to the package.json and add #!/usr/bin/env node to the top of the specified entry point.

Node and Deno Specific Code

You may find yourself in a scenario where you want to run certain code based on whether someone is in Deno or if someone is in Node and feature testing is not possible. For example, say you want to run the deno executable when the code is running in Deno and the node executable when it's running in Node.

which_runtime

One option to handle this, is to use the which_runtime deno.land/x module which provides some exports saying if the code is running in Deno or Node.

Node and Deno Specific Modules

Another option is to create node and deno specific modules. This can be done by specifying a mapping to a module:

await build({
  // ...etc...
  mappings: {
    "./file.deno.ts": "./file.node.ts",
  },
});

Then within the file, use // dnt-shim-ignore directives to disable shimming if you desire.

A mapped module should be written similar to how you write Deno code (ex. use extensions on imports), except you can also import built-in node modules such as import fs from "fs"; (just remember to include an @types/node dev dependency under the package.devDependencies object when calling the build function, if necessary).

Pre & Post Build Steps

Since the file you're calling is a script, simply add statements before and after the await build({ ... }) statement:

import { build, emptyDir } from "https://deno.land/x/dnt/mod.ts";

// run pre-build steps here
await emptyDir("./npm");

// build
await build({
  // ...etc..
});

// run post-build steps here
await Deno.copyFile("LICENSE", "npm/LICENSE");
await Deno.copyFile("README.md", "npm/README.md");

Including Test Data Files

Your Deno tests might rely on test data files. One way of handling this is to copy these files to be in the output directory at the same relative path your Deno tests run with.

For example:

import { copy } from "https://deno.land/[email protected]/fs/mod.ts";

await Deno.remove("npm", { recursive: true }).catch((_) => {});
await copy("testdata", "npm/esm/testdata", { overwrite: true });
await copy("testdata", "npm/script/testdata", { overwrite: true });

await build({
  // ...etc...
});

// ensure the test data is ignored in the `.npmignore` file
// so it doesn't get published with your npm package
await Deno.writeTextFile(
  "npm/.npmignore",
  "esm/testdata/\nscript/testdata/\n",
  { append: true },
);

Alternatively, you could also use the which_runtime module and use a different directory path when the tests are running in Node. This is probably more ideal if you have a lot of test data.

Test File Matching

By default, dnt uses the same search pattern that deno test uses to find test files. To override this, provide a testPattern and/or rootTestDir option:

await build({
  // ...etc...
  testPattern: "**/*.test.{ts,tsx,js,mjs,jsx}",
  // and/or provide a directory to start searching for test
  // files from, which defaults to the current working directory
  rootTestDir: "./tests",
});

Import Map / deno.json Support

To use an import map or deno.json file with "imports" and/or "scopes", add an importMap entry to your build object:

await build({
  // ...etc...
  importMap: "deno.json",
});

Note there is no support for the deno.json importMap key. Either embed that in your deno.json or specify the import map in this property directly. Also note that the deno.json is not auto-discovered—you must explicitly specify it.

GitHub Actions - Npm Publish on Tag

  1. Ensure your build script accepts a version as a CLI argument and sets that in the package.json object. For example:

    await build({
      // ...etc...
      package: {
        version: Deno.args[0],
        // ...etc...
      },
    });

    Note: You may wish to remove the leading v in the tag name if it exists (ex. Deno.args[0]?.replace(/^v/, ""))

  2. In your npm settings, create an automation access token (see Creating and Viewing Access Tokens).

  3. In your GitHub repo or organization, add a secret for NPM_TOKEN with the value created in the previous step (see Creating Encrypted Secrets for a Repository).

  4. In your GitHub Actions workflow, get the tag name, setup node, run your build script, then publish to npm.

    # ...setup deno and run `deno test` here as you normally would...
    
    - name: Get tag version
      if: startsWith(github.ref, 'refs/tags/')
      id: get_tag_version
      run: echo TAG_VERSION=${GITHUB_REF/refs\/tags\//} >> $GITHUB_OUTPUT
    - uses: actions/setup-node@v3
      with:
        node-version: '18.x'
        registry-url: 'https://registry.npmjs.org'
    - name: npm build
      run: deno run -A ./scripts/build_npm.ts ${{steps.get_tag_version.outputs.TAG_VERSION}}
    - name: npm publish
      if: startsWith(github.ref, 'refs/tags/')
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      run: cd npm && npm publish

    Note that the build script always runs even when not publishing. This is to ensure your build and tests pass on each commit.

  5. Ensure the workflow will run on tag creation. For example, see Trigger GitHub Action Only on New Tags).

Using Another Package Manager

You may want to use another Node.js package manager instead of npm, such as Yarn or pnpm. To do this, override the packageManager option in the build options.

For example:

await build({
  // ...etc...
  packageManager: "yarn", // or "pnpm"
});

You can even specify an absolute path to the executable file of the package manager:

await build({
  // ...etc...
  packageManager: "/usr/bin/pnpm",
});

DOM Types

If you wish to compile with DOM types for type checking, you may specify a "dom" lib compiler option when building:

await build({
  // ...etc...
  compilerOptions: {
    lib: ["ES2021", "DOM"],
  },
});

Node v14 and Below

dnt should be able to target old versions of Node by specifying a { compilerOption: { target: ... }} value in the build options (see Node Target Mapping for what target maps to what Node version). A problem though is that certain shims might not work in old versions of Node.

If wanting to target a version of Node v14 and below, its recommend to use the Deno.test-only shim (described above) and then making use of the "mappings" feature to write Node-only files where you can handle differences. Alternatively, see if changes to the shim libraries might make it run on old versions of Node. Unfortunately, certain features are impossible or infeasible to get working.

See this thread in node_deno_shims for more details.

JS API Example

For only the Deno to canonical TypeScript transform which may be useful for bundlers, use the following:

// docs: https://doc.deno.land/https/deno.land/x/dnt/transform.ts
import { transform } from "https://deno.land/x/dnt/transform.ts";

const outputResult = await transform({
  entryPoints: ["./mod.ts"],
  testEntryPoints: ["./mod.test.ts"],
  shims: [],
  testShims: [],
  // mappings: {}, // optional specifier mappings
});

Rust API Example

use std::path::PathBuf;

use deno_node_transform::ModuleSpecifier;
use deno_node_transform::transform;
use deno_node_transform::TransformOptions;

let output_result = transform(TransformOptions {
  entry_points: vec![ModuleSpecifier::from_file_path(PathBuf::from("./mod.ts")).unwrap()],
  test_entry_points: vec![ModuleSpecifier::from_file_path(PathBuf::from("./mod.test.ts")).unwrap()],
  shims: vec![],
  test_shims: vec![],
  loader: None, // use the default loader
  specifier_mappings: None,
}).await?;

More Repositories

1

deno

A modern runtime for JavaScript and TypeScript.
Rust
93,907
star
2

fresh

The next-gen web framework.
TypeScript
12,234
star
3

rusty_v8

Rust bindings for the V8 JavaScript engine
Rust
3,094
star
4

deno_std

Deno standard library
TypeScript
2,705
star
5

deno_lint

Blazing fast linter for JavaScript and TypeScript written in Rust
Rust
1,514
star
6

vscode_deno

Visual Studio Code plugin for Deno
TypeScript
1,468
star
7

saaskit

A modern SaaS template built on Fresh.
TypeScript
1,195
star
8

dotland

[Archived] deno.land website
TypeScript
958
star
9

deno_install

Deno Binary Installer
PowerShell
945
star
10

deno_docker

Latest dockerfiles and images for Deno - alpine, centos, debian, ubuntu
Dockerfile
876
star
11

fastwebsockets

A fast RFC6455 WebSocket implementation
Rust
837
star
12

deno-lambda

A deno runtime for AWS Lambda. Deploy deno via docker, SAM, serverless, or bundle it yourself.
TypeScript
836
star
13

deno_blog

Minimal boilerplate blogging.
TypeScript
459
star
14

denokv

A self-hosted backend for Deno KV
TypeScript
456
star
15

deployctl

Command line tool for Deno Deploy
TypeScript
331
star
16

showcase_chat

TypeScript
302
star
17

roll-your-own-javascript-runtime

Rust
298
star
18

merch

The Deno shop!
TypeScript
283
star
19

deno_bindgen

Write high-level Deno FFI libraries in Rust.
Rust
275
star
20

wasmbuild

Build tool to use Rust code in Deno and the browser.
TypeScript
263
star
21

deno_core

The core engine at the heart of Deno
Rust
262
star
22

deno_doc

Documentation generator for Deno
Rust
251
star
23

setup-deno

Set up your GitHub Actions workflow with a specific version of Deno
JavaScript
248
star
24

meet-me

A calendly clone in Deno and hosted on Deno Deploy
TypeScript
245
star
25

deno_kv_oauth

High-level OAuth 2.0 powered by Deno KV.
TypeScript
245
star
26

eszip

A compact file format to losslessly serialize an ECMAScript module graph into a single file
Rust
220
star
27

deno-gfm

Server-side GitHub Flavored Markdown rendering for Deno
TypeScript
220
star
28

deno_emit

Transpile and bundle JavaScript and TypeScript under Deno and Deno Deploy
TypeScript
217
star
29

webgpu-examples

TypeScript
214
star
30

doc_website

Archived. New version at https://github.com/denoland/docland
TypeScript
195
star
31

manual

Deprecated - find these resources on docs.deno.com instead
TypeScript
162
star
32

node_shims

npm packages providing shims for the Deno namespace and other globals. Useful for running Deno-first programs on Node.
TypeScript
149
star
33

deno_ast

Source text parsing, lexing, and AST related functionality for Deno
Rust
148
star
34

denobyexample

[Archived] Deno by example - short examples showcasing how to use Deno. Now the examples have been moved to https://github.com/denoland/deno-docs / https://docs.deno.com/examples
TypeScript
146
star
35

fresh_charts

A server-side-rendered charting library for Fresh
TypeScript
136
star
36

deploy_examples

Examples for Deno Deploy
TypeScript
125
star
37

docland

The documentation generation website for Deno
TypeScript
120
star
38

deno_graph

The module graph logic for Deno CLI
Rust
111
star
39

deno_task_shell

Cross-platform shell for deno task.
Rust
104
star
40

deno_registry2

The backend for the deno.land/x service
TypeScript
92
star
41

showcase_todo

Collaborative todo-list app built with Deno and Fresh
TypeScript
82
star
42

deno_third_party

TypeScript
78
star
43

monch

Inspired by nom, but specifically for strings.
Rust
77
star
44

examples

A simple todo app using Deno and React.
TypeScript
77
star
45

tic-tac-toe

A global, real-time multiplayer TicTacToe game for Deno 🦕
TypeScript
75
star
46

deploy_feedback

For reporting issues with Deno Deploy
74
star
47

deno-astro-adapter

A Deno adapter for running Astro applications on the Deno runtime.
TypeScript
67
star
48

pixelpage

Pixel page is an r/place style shared pixel art canvas 🎨🦕
TypeScript
64
star
49

v8

floating patches for rusty_v8
TypeScript
60
star
50

rust-urlpattern

Rust implementation of the `URLPattern` web API
Rust
58
star
51

docs

Deno documentation, examples and API Reference. Powered by Lume.
TypeScript
57
star
52

fresh-wordpress-themes

https://wp-blog-example.deno.dev/ https://wp-sweets-co.deno.dev/
TypeScript
53
star
53

apiland

The API server for deno.land
TypeScript
52
star
54

deno-astro-template

Template repo for an Astro site, preconfigured to run with Deno and Deno Deploy
Astro
49
star
55

sui

Embed custom RO data into precompiled executables
Rust
47
star
56

wanted_modules

Is there a missing deno module that is preventing you from building something? Let us know here.
46
star
57

cargo_gn

Cargo GN integration
Rust
40
star
58

wasmbuild_example

Example of using wasmbuild.
JavaScript
38
star
59

deno_cache_dir

Deno CLI's module cache
Rust
38
star
60

ga

Utilities for server side processing of Google Analytics in Deno CLI and Deploy
TypeScript
38
star
61

serde_v8

Moved to https://github.com/denoland/deno
Rust
36
star
62

import_map

An implementation of WICG Import Maps specification
Rust
30
star
63

flaky_test

atttribute macro for running a flaky test multiple times
Rust
30
star
64

chromium_build

Deno floats patches to //build here (they will be sent upstream eventually)
Python
29
star
65

fresh-blog-example

An example for building a blog with Fresh.
TypeScript
28
star
66

libffi-rs

Fork of libffi-rs which corrects autotools usage
C
22
star
67

deno_npm

npm registry client and dependency resolver used in the Deno CLI.
Rust
22
star
68

deno-sveltekit-template

A starter template for running SvelteKit on Deno Deploy
JavaScript
22
star
69

chatspace

Real-time, collaborative GPT frontend built with Deno KV
TypeScript
22
star
70

doc_components

A set of components for rendering deno_doc doc nodes
TypeScript
21
star
71

rustls-tokio-stream

AsyncRead/AsyncWrite interface for rustls-on-Tokio
Rust
21
star
72

subhosting_ide_starter

Basic starter app for a browser-based IDE using the Deno Subhosting API
JavaScript
21
star
73

deno-vue-example

An example of using Vue with Deno.
Vue
20
star
74

terraform-deploy-provider

Terraform provider for Deno Deploy
Go
20
star
75

deploy_lume_example

An example demonstrating using static site generators on Deno Deploy
TypeScript
20
star
76

monaco-nextjs-demo

A demo Next.js app that features an in-browser IDE built with Monaco.
JavaScript
20
star
77

image-resizing-api

A simple image resizing API written in Deno.
TypeScript
19
star
78

kv_api

WORK IN PROGRESS: Attach a flexible REST API to your Deno web app to manage data in Deno KV
TypeScript
19
star
79

deno-kv-hackathon

Rules, details, and place to submit your project for the Deno KV hackathon.
18
star
80

automation

Automation scripts used for denoland org repos
TypeScript
17
star
81

react18-with-deno

A starter app and tutorial with React18 and Deno.
TypeScript
17
star
82

chromium_buildtools

forked from chromium to use git submodules instead of gclient
Python
17
star
83

benchmark_data

TypeScript
16
star
84

terraform-provider-deno

Terraform provider for hosted Deno APIs
Go
15
star
85

deno-nuxt-template

A template repo for a Nuxt project preconfigured for Deno Deploy
TypeScript
14
star
86

fresh-deno-kv-oauth-demo

Fresh + Deno KV OAuth demo
TypeScript
14
star
87

x-to-jsr

TypeScript
14
star
88

serverless-coldstart-benchmarks

Configuration, benchmarking scripts, and raw data for serverless cold start benchmarks.
Jupyter Notebook
14
star
89

icu

For floating patches on top of https://chromium.googlesource.com/chromium/deps/icu.git
C++
12
star
90

fresh_template

template repository for a Fresh project
12
star
91

deno-vite-plugin

Vite plugin to enable Deno resolution inside vite.
TypeScript
12
star
92

experimental-deno-specifiers-example

TypeScript
12
star
93

deno_lockfile

Rust
12
star
94

fresh-auth-example

TypeScript
11
star
95

deno_config

Rust
11
star
96

deno_media_type

Media type used in Deno.
Rust
11
star
97

notebook

TypeScript
10
star
98

nextgen-install

HCL
10
star
99

v8_valueserializer

A Rust implementation of V8's ValueSerializer and ValueDeserializer
Rust
10
star
100

website_feedback

For reporting issues & suggestions for deno.com and deno.land
9
star