denoland / deno

A modern runtime for JavaScript and TypeScript.
https://deno.com
MIT License
96.93k stars 5.35k forks source link

How do I vendor jsr std modules with Deno v2 #26488

Open Dmitri-Sintsov opened 2 days ago

Dmitri-Sintsov commented 2 days ago

With Deno v1 deno vendor command I used to build the complete local copy of the project dependencies, then to run it without having to rely on remote access with deno run --no-remote flag.

Trying to vendoring with Deno v2 where deno vendor is removed with the following cli command:

/home/user/.deno/bin/deno install --allow-env --allow-ffi --allow-import --allow-net --allow-read --allow-sys --force --vendor --lock=/home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/lock.json --entrypoint /home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts

it downloads the dependencies successfully, but either these are incomplete or are not always used, because running with --no-remote

/home/user/.deno/bin/deno run --allow-env --allow-ffi --allow-import --allow-net --allow-read --allow-sys --config=/home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/deno.json --no-remote /home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts --host=127.0.0.1 --port=8099

produces the following error:

error: JSR package manifest for '@std/cli' failed to load. A remote specifier was requested: "https://jsr.io/@std/cli/meta.json", but --no-remote is specified.
    at file:///home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts:3:27

No matter whether I try to use the latest version:

import { parseArgs } from "jsr:@std/cli/parse-args";

or fixing the version, in hope it would be used from local cache:

import { parseArgs } from "jsr:@std/cli@1.0.6/parse-args";
Dmitri-Sintsov commented 2 days ago

Now tried to remove --lock option for deno install

It downloads the dependencies and recreates lock.json however deno run --no-remote still fails with the same error.

It would be nice to have section in the documentation how to reproduce deno vendor in v2.

marvinhagemeister commented 2 days ago

That section exists in the Deno 1 -> 2 migration guide in our documentation https://docs.deno.com/runtime/reference/migration_guide/#cli-changes . Quoting the relevant part:

The deno vendor command has been replaced by a "vendor": true configuration option in deno.json.

{
  "vendor": true
}

Does setting "vendor": true in your deno.json help?

lucacasonato commented 1 day ago

@Dmitri-Sintsov You need to pass --vendor to the deno run command too (so it picks up the vendor directory), or you need to specify vendor: true in your deno.json as @marvinhagemeister suggested.

Dmitri-Sintsov commented 1 day ago

Thank you a lot for the suggestions, yet still it does not work.

Vendor cli and log:

Starting /home/user/.deno/bin/deno install --allow-env --allow-ffi --allow-import --allow-net --allow-read --allow-sys --force --reload --vendor --entrypoint /home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts
pid=334453
Download https://registry.npmjs.org/@babel/code-frame
Download https://registry.npmjs.org/@babel/helper-validator-identifier
Download https://registry.npmjs.org/@babel/highlight
Download https://registry.npmjs.org/@jridgewell/gen-mapping
Download https://registry.npmjs.org/@jridgewell/resolve-uri
Download https://registry.npmjs.org/@jridgewell/set-array
Download https://registry.npmjs.org/@jridgewell/source-map
Download https://registry.npmjs.org/@jridgewell/sourcemap-codec
Download https://registry.npmjs.org/@jridgewell/trace-mapping
Download https://registry.npmjs.org/@rollup/rollup-android-arm-eabi
Download https://registry.npmjs.org/@rollup/rollup-android-arm64
Download https://registry.npmjs.org/@rollup/rollup-darwin-arm64
Download https://registry.npmjs.org/@rollup/rollup-darwin-x64
Download https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf
Download https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf
Download https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu
Download https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl
Download https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu
Download https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu
Download https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu
Download https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu
Download https://registry.npmjs.org/@rollup/rollup-linux-x64-musl
Download https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc
Download https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc
Download https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc
Download https://registry.npmjs.org/@types/estree
Download https://registry.npmjs.org/@wwa/rollup-plugin-terser
Download https://registry.npmjs.org/acorn
Download https://registry.npmjs.org/ansi-styles
Download https://registry.npmjs.org/buffer-from
Download https://registry.npmjs.org/chalk
Download https://registry.npmjs.org/color-convert
Download https://registry.npmjs.org/color-name
Download https://registry.npmjs.org/commander
Download https://registry.npmjs.org/escape-string-regexp
Download https://registry.npmjs.org/fsevents
Download https://registry.npmjs.org/has-flag
Download https://registry.npmjs.org/js-tokens
Download https://registry.npmjs.org/path-to-regexp
Download https://registry.npmjs.org/picocolors
Download https://registry.npmjs.org/rollup
Download https://registry.npmjs.org/source-map-support
Download https://registry.npmjs.org/source-map
Download https://registry.npmjs.org/supports-color
Download https://registry.npmjs.org/terser
Download https://deno.land/x/oak@v17.1.1/mod.ts
Download https://unpkg.com/rollup@2.79.2/dist/es/rollup.browser.js
Download https://unpkg.com/rollup@2.79.2/dist/rollup.d.ts
Download https://jsr.io/@std/cli/meta.json
Download https://jsr.io/@oak/oak/meta.json
Download https://jsr.io/@std/path/meta.json
Download https://jsr.io/@std/fs/meta.json
Download https://deno.land/x/oak@v17.1.1/application.ts
Download https://deno.land/x/oak@v17.1.1/context.ts
Download https://deno.land/x/oak@v17.1.1/http_server_native.ts
Download https://deno.land/x/oak@v17.1.1/http_server_native_request.ts
Download https://deno.land/x/oak@v17.1.1/middleware/etag.ts
Download https://deno.land/x/oak@v17.1.1/middleware/proxy.ts
Download https://deno.land/x/oak@v17.1.1/middleware/serve.ts
Download https://deno.land/x/oak@v17.1.1/middleware.ts
Download https://deno.land/x/oak@v17.1.1/request.ts
Download https://deno.land/x/oak@v17.1.1/response.ts
Download https://deno.land/x/oak@v17.1.1/router.ts
Download https://deno.land/x/oak@v17.1.1/send.ts
Download https://deno.land/x/oak@v17.1.1/testing.ts
Download https://deno.land/x/oak@v17.1.1/types.ts
Download https://deno.land/x/oak@v17.1.1/deps.ts
Download https://deno.land/x/oak@v17.1.1/utils/clone_state.ts
Download https://deno.land/x/oak@v17.1.1/utils/create_promise_with_resolvers.ts
Download https://deno.land/x/oak@v17.1.1/utils/type_guards.ts
Download https://deno.land/x/oak@v17.1.1/utils/consts.ts
Download https://deno.land/x/oak@v17.1.1/body.ts
Download https://deno.land/x/oak@v17.1.1/utils/encode_url.ts
Download https://deno.land/x/oak@v17.1.1/utils/streams.ts
Download https://deno.land/x/oak@v17.1.1/utils/decode.ts
Download https://deno.land/x/oak@v17.1.1/utils/decode_component.ts
Download https://deno.land/x/oak@v17.1.1/utils/resolve_path.ts
Download https://jsr.io/@std/assert/meta.json
Download https://jsr.io/@std/bytes/meta.json
Download https://jsr.io/@std/crypto/meta.json
Download https://jsr.io/@std/http/meta.json
Download https://jsr.io/@std/io/meta.json
Download https://jsr.io/@std/media-types/meta.json
Download https://jsr.io/@oak/commons/meta.json
Download https://deno.land/x/oak@v17.1.1/node_shims.ts
Download https://jsr.io/@std/fmt/meta.json
Download https://jsr.io/@std/cli/1.0.6_meta.json
Download https://jsr.io/@oak/oak/17.1.1_meta.json
Download https://jsr.io/@std/path/1.0.6_meta.json
Download https://jsr.io/@std/fs/1.0.4_meta.json
Download https://jsr.io/@std/assert/1.0.6_meta.json
Download https://jsr.io/@std/bytes/1.0.2_meta.json
Download https://jsr.io/@std/crypto/1.0.3_meta.json
Download https://jsr.io/@std/http/1.0.8_meta.json
Download https://jsr.io/@std/io/0.224.9_meta.json
Download https://jsr.io/@std/media-types/1.0.3_meta.json
Download https://jsr.io/@oak/commons/1.0.0_meta.json
Download https://jsr.io/@std/fmt/1.0.2_meta.json
Download https://jsr.io/@std/encoding/meta.json
Download https://jsr.io/@std/encoding/1.0.5_meta.json
Download https://deno.land/x/oak@v17.1.1/http_server_node.ts
Download https://deno.land/x/oak@v17.1.1/http_server_bun.ts
Download https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz
Download https://registry.npmjs.org/@wwa/rollup-plugin-terser/-/rollup-plugin-terser-1.1.2.tgz
Download https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz
Download https://registry.npmjs.org/terser/-/terser-5.36.0.tgz
Download https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz
Download https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz
Download https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz
Download https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz
Download https://registry.npmjs.org/commander/-/commander-2.20.3.tgz
Download https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz
Download https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz
Download https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz
Download https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz
Download https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz
Download https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz
Download https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz
Download https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz
Download https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz
Download https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz
Download https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz
Download https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz
Download https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz
Download https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz
Download https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz
Download https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz
Download https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz
Download https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz
Download https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz
Download https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz
Download https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz
Initialize commander@2.20.3
Initialize source-map-support@0.5.21
Initialize path-to-regexp@6.2.1
Initialize chalk@2.4.2
Initialize ansi-styles@3.2.1
Initialize color-convert@1.9.3
Initialize has-flag@3.0.0
Initialize supports-color@5.5.0
Initialize acorn@8.13.0
Initialize js-tokens@4.0.0
Initialize @babel/code-frame@7.25.9
Initialize terser@5.36.0
Initialize escape-string-regexp@1.0.5
Initialize @wwa/rollup-plugin-terser@1.1.2
Initialize picocolors@1.1.1
Initialize @types/estree@1.0.6
Initialize buffer-from@1.1.2
Initialize @jridgewell/gen-mapping@0.3.5
Initialize color-name@1.1.3
Initialize @babel/helper-validator-identifier@7.25.9
Initialize @jridgewell/set-array@1.2.1
Initialize @babel/highlight@7.25.9
Initialize @jridgewell/resolve-uri@3.1.2
Initialize @jridgewell/source-map@0.3.6
Initialize @jridgewell/sourcemap-codec@1.5.0
Initialize @jridgewell/trace-mapping@0.3.25
Initialize source-map@0.6.1
Initialize rollup@4.24.0
Initialize @rollup/rollup-linux-x64-musl@4.24.0
Initialize @rollup/rollup-linux-x64-gnu@4.24.0

Process finished with exit code 0

running with --no-remote log, just after the vendoring:

Starting deno server /home/user/.deno/bin/deno run --allow-env --allow-ffi --allow-import --allow-net --allow-read --allow-sys --config=/home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/deno.json --vendor --no-remote /home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts --host=127.0.0.1 --port=8099
pid=334508
Sending import maps to deno server pid=334508
error: JSR package manifest for '@std/cli' failed to load. A remote specifier was requested: "https://jsr.io/@std/cli/meta.json", but --no-remote is specified.
    at file:///home/user/work/djk-sample310/lib/python3.10/site-packages/django_deno/deno/server.ts:3:27

When --no-remote is not specified, the process works successfully.

The error is the same, no matter whether "vendor": true specified in deno.json or not:

{
  "nodeModulesDir": "auto",
  "vendor": true
}

By the way, specifying cli options in json file is not flexible when running Deno as process with dynamically generated options.