#Deno compile with --include

4 messages · Page 1 of 1 (latest)

river phoenix
#

Hi, playing around with deno compile --include following the docs probably doing something wrong but not sure what. Help appreciated, using v2.5.3. I have the following

names.tsv

John    Doe
Jane    Smith
Alice    Jones

cli.ts

if (import.meta.main) {
  const names = Deno.readTextFileSync(import.meta.dirname + "/names.tsv");
  console.debug(names);
}

After compiling the file with deno compile cli.ts --include names.tsv and running the resulting binary and get this error:

error: Uncaught (in promise) NotFound: path not found: readfile '/tmp/deno-compile-deno-embed/names.tsv'
  const names = Deno.readTextFileSync(import.meta.dirname + "/names.tsv");
                     ^
    at Object.readTextFileSync (ext:deno_fs/30_fs.js:771:10)
    at file:///tmp/deno-compile-deno-embed/cli.ts:2:22
Deno

Compile your code into a standalone executable

river phoenix
# river phoenix Hi, playing around with `deno compile --include` following the [docs](https://do...

Found the problem, seems like command line parsing is a bit buggy here and the order does alter the result

  • deno compile cli.ts --include names.tsv. Generates the executable without warnings or errors but silently ignores the --include names.tsv parameter. This should work as expected or throw an error when parsing arguments.
  • deno compile --include names.tsv cli.ts. Generates the executable and actually includes the asset into the binary.
weary goblet
#

That's the intended behavior. When you pass the arguments after cli.ts, the arguments are passed to cli.ts, not to deno compile. It's the same as the difference between deno run --allow-all cli.ts and deno run cli.ts --allow-all

river phoenix
#

Thanks for the clarification. It's working as intended then. It's weird though to pass parameters to something I'm compiling but I suppose there might be a use case for that.