Nova

Extensions


Readme

Deno 🦕

Everything you need for TypeScript and JavaScript development, powered by the Deno runtime.

  • Zero-config Typescript support.
  • A complete development toolchain including a formatter, linter, test runner, bundler, and language server.
  • Complete support for standard Web APIs like fetch, WebSocket, or the Streams API.
  • An audited standard library.
  • Dependencies without node_modules or package.json.
  • Secure by default, requiring explicit permission for file, network or environment access.

Deno's complete and fast toolchain (built in Rust) is the perfect companion for Nova. This extension provides the following integrations with Nova:

  • Typechecking, linting, completions, code actions, registry import suggestions, and more in your editor.
  • Tasks in Nova derived from Deno tasks.
  • Automatic formatting on save.
  • Commands for renaming symbols, caching dependencies, formatting documents, and renaming symbols.
  • Symbol search and dedicated sidebar.
  • Task templates for deno run and deno bundle commands.
  • Global and per-project configuration settings.

Nova also has built-in support for Deno's debugger thanks to its Deno Debug project task (Project → Project Settings → Add Deno Debug using + in Tasks section).

How is this different to the TypeScript extension?

There is an excellent Nova Typescript extension by Cameron little. This extension assumes the usage of the Node.js runtime, which does not have its own formatter, linter, test runner, bundler, etc. and as such requires several other dependencies and corresponding Nova extensions for these features.

Requirements 🎒

To use this extension, you must have the Deno runtime installed (v.1.10.3 or above). Installation instructions can be found here.

If you use Deno 1.18+, any deno.json configuration files will be automatically detected and used by this extension.

Support for Deno tasks requires Deno 1.20+.

Commands ⌨️

  • Cache - Cache all external dependencies
  • Format Document - Format with Deno's formatter
  • Rename symbol - Rename variables, functions, etc.
  • Find Symbol - Search for symbols in the codebase
  • Restart Deno LSP server - You shouldn't have to do this, but it's nice to have when you start getting angry.

Configuration options ⚙️

All of the below can be configured at a global and per-project basis (via Project → Project Settings...).

  • Format on save
  • Deno language features
  • Linting
  • Unstable Deno APIs
  • Import map

The following is configurable only at a global scope:

  • Trusted and untrusted hosts for Import suggestions

Maintainers

Shoutouts 📣

Big thanks to Cameron Little's excellent Nova Typescript extension for providing an excellent reference (and a lot of code) for developing a great Nova extension.

Contributing 🤝

This extension is itself a Deno codebase. Come add features and fix bugs with us!


Changelog

v1.1.1

  • Bump to publish the correct build.

v1.1.0

  • Symbols: This update adds a new 'Find Symbol' command and accompanying Deno Symbols sidebar to show the results of your search. (thanks to belcar-s!)
  • The extension will now gracefully handle Deno not being installed (belcar-s)

v1.0.4

  • Fixes an issue where tasks defined in a deno.jsonc config file would not be exposed as Nova tasks (thanks again, belcar-s!)
  • Fixes an issue where the extension would not work in files which were not associated with any project yet (thanks again, belcar-s!)

v1.0.3

  • Fixed an issue where the "Enable Deno Language Features" preferenc was not being respected (thanks again, belcar-s!)

v1.0.2

  • Fixed an issue where the 'Format on save' preference was not being respected (thank you belcar-s!)
  • Made it so that the LSP is relaunched when the deno.json configuration file is modified.

v1.0.1

  • Bump for publishing the updated README.

v1.0.0

  • Added support for automatically detecting Deno tasks and adding them as Nova tasks.
  • With Nova 9, many previous issues (such as code actions, or completions only being shown on typing certain characters) have gone, and this is a whole new extension!
  • New icons!

v0.4.2

  • Now properly restarts LSP server when changing global and per-project settings in Nova.

v0.4.1

  • Fix issue where formatting on save could not be configured at project level.

v0.4.0

  • Added support for import suggestions!
  • Removed configuration file option (Deno will detect it automatically as of v1.18)
  • Added "Restart Deno LSP server" command.
  • Added JSON and JSONC as syntaxes this extension can use.
  • Fixed a bug where formatting a document would hang indefinitely.

v0.3.4

  • Makes sure some fixes are actually included in the built extension.
  • Added a funding link.

v0.3.3

  • Fixes an issue where enabling network access in the Run task passed the wrong flag (thanks jaydenseric!)
  • Stops the Deno LSP from printing all its logs as errors in the extension console.

v0.3.2

  • Quick update to fix a submission error.

v0.3.1

  • Refactored task templates so that they succeed more often and are easier to manage!

v0.3

  • Added per-workspace configs for import maps and tsconfig.json for the LSP to use.

v0.2

  • Added global and per-workspace configs for:
  • Language features
  • Linting
  • Format on save
  • Unstable API support.
  • Added built in Task Templates for deno run and deno bundle, which can be added and configured from Project -> Project Settings.
  • Fixed an issue where linting was not being enabled properly.
  • Removed unnecessary network access entitlement.

v0.1

  • Initial release