@axhxrx/nx-deno
v1.0.2
Published
A plugin for working with Deno in an Nx monorepo. This is a [fork](https://github.com/axhxrx/axhxrx-nx-deno) of the final version of the original [@nrwl nx-labs](https://github.com/nrwl/nx-labs) `@nx/deno` plugin, at the time it was [discontinued](https:/
Downloads
6
Readme
@axhxrx/nx-deno
A plugin for working with Deno in an Nx monorepo. This is a fork of the final version of the original @nrwl nx-labs @nx/deno
plugin, at the time it was discontinued.
How to hack on this and release it
The first attmpts to automate the NPM package release went sideways, with the git version not matching the NPM version, so here are the steps:
Create a branch and PR to fix something or whatever, to warrant a new release, and make sure
nx e2e deno-e2e
succeeds.Merge PR to
axhxrx-nx-deno
branch (notmain
).Tag that commit like
v1.0.3
Make a GitHub release with release notes.
When all that is done,
nx build deno && nx e2e deno-e2e
If all goes well, rejoice! Then publish manually like
cd dist/packages/deno && npm publish
(NOTE: Obviously, that whole mess should be automated. But Nx itself doesn't work great for that kind of thing, because of closed-but-not-yet-fixed issues Allow interactive commands through @nrwl/workspace:run-commands #8269. But apparently feat(core): forward stdin to commands started via rust #21195 will also fix #8629 when it lands, and that will be soon, so... waiting for that.)
🤖 2024-01-28: All sorts of projects, including this one, are a little broken on macOS because on ARM the macOS cannot reliably delete node_modules. So every once in a while, some shit will fail because blah blah rm node_modules failed, weah weah directory not empty
. That includes the nx e2e deno-e2e
step, so if that happens, "simply" run it again.
The README from the original Nx project follows:
@nx/deno
⚠️ The Deno plugin is deprecated and will no longer receive updates. We are committed to providing high-quality tooling to community, and we no longer have the capacity to keep this plugin updated.
Deno is a JavaScript runtime that provides great tooling and hassle-free deployment.
The following guides show you how to create a new Deno project and deploy to either Deno Deploy or Netlify.
- Deno Deploy: https://nx.dev/recipes/deployment/deno-deploy
- Netlify: https://nx.dev/recipes/deployment/deno-netlify
Setup
Create a new Nx workspace if you don't already have one.
npx create-nx-workspace@latest deno-demo --preset=@nx/deno:preset
Now, you can go into the deno-demo
folder and start development.
cd deno-demo
deno task start
You can also run lint, test, and build scripts for the project.
deno task lint
deno task test
deno task build
Note: Change deno-demo
to any project name you want.
Existing workspaces
You can add Deno to any existing Nx workspace.
First, install the plugin:
npm install -DE @nx/deno@latest
Create a new Deno App
You can create additional Deno apps
npx nx g @nx/deno:app
You can run npx nx serve <your-Deno-app-name>
and see the sample web server on htts://localhost:8000
You can also run test, lint, and build as tasks for <your-Deno-app-name>
npx nx serve <your-Deno-app-name>
npx nx test <your-Deno-app-name>
npx nx lint <your-Deno-app-name>
npx nx build <your-Deno-app-name>
Building/Bundling is an optional step in Deno so you don't have to build when using @nx/deno, but it can be useful to bundle the code into a single file for easier portability if you so need it.
Create a new Deno Library
npx nx g @nx/deno:lib
Deno libraies only come with lint/test targets to run.
npx nx test <your-Deno-library-name>
npx nx lint <your-Deno-library-name>
You can easily consume these libraries with their import aliases that are listed in the import_map.json
in the root of the workspace.
Customizing
The executors have a denoConfig
option that allows you to pass in a deno config. This defaults to the generated deno.json
in the project root of each generated deno project.
Within this file you can control various aspects of Deno, such as lint and test settings.
Read more about the deno.json
config file
By default this config uses the import_map.json
in the root of the workspace.
This file contains the import alias to your other local Deno projects that you can use across other projects.