A fake file system for Deno binaries by Mandarine.
Leaf is a fake file system for Deno binaries. This means, you can save your files along with the binary generated by deno compile
, this way, you can put all your files together in a single executable which leads to easier deployments and a more compacted deliverable output.
Using Leaf in your application is very simple, you just use the regular Deno APIs after you ran a 'leaf compile'. More on this below.
The Leaf.compile()
method is responsible for creating a typescript file with your resources in it. This file is then compiled into your binary.
Leaf.compile()
takes one argument containing the options to include.
// File: compile.ts
import { Leaf } from "https://deno.land/x/leaf/mod.ts";
Leaf.compile({
modulePath: "./myEntryPoint.ts",
contentFolders: ["./resources"],
// flags: [],
// output: ''
})
modulePath
and contentFolders
are necessary.
modulePath
: File to be compiled into a binary.contentFolders
: Folders to be attached to the binary.flags
optional: the Deno flags normally used fordeno compile
.output
optional: Replaces the--output
flags option.
Synchronously reads and returns the entire contents of a file as an array of bytes. TextDecoder
can be used to transform the bytes to string if required. Reading a directory returns an empty data array.
const decoder = new TextDecoder("utf-8");
const data = Deno.readFileSync("hello.txt");
console.log(decoder.decode(data));
Reads and returns the entire contents of a file as an array of bytes. TextDecoder
can be used to transform the bytes to string if required. Reading a directory returns an empty data array.
const decoder = new TextDecoder("utf-8");
const data = await Deno.readFile("hello.txt");
console.log(decoder.decode(data));
Synchronously reads and returns the entire contents of a file as utf8 encoded string.
const data = Deno.readTextFileSync("hello.txt");
console.log(data);
Reads and returns the entire contents of a file as utf8 encoded string.
const data = await Deno.readTextFile("hello.txt");
console.log(data);
We run the compile.ts
script which creates the file system .ts
which then runs deno compile
to build the final binary.
// compile.ts
import { Leaf } from "https://deno.land/x/leaf/mod.ts";
Leaf.compile({
modulePath: "./myEntryPoint.ts",
contentFolders: ["./resources"]
})
./resources/hello.txt
Hello World
myEntryPoint.ts:
console.log(Deno.readTextFileSync("./resources/hello.txt"));
deno run --allow-all --unstable compile.ts
./myEntryPoint (.exe if windows)
# output: Hello World
For questions & community support, please visit our Discord Channel or join us on our twitter.
In order to submit improvements to the code, open a PR and wait for it to review. We appreciate you doing this.
We would love to have you in our community, please submit an issue to provide information about a bug, feature, or improvement you would like.
- Author : Andres Pirela
- Website : https://www.mandarinets.org/
- Twitter : @mandarinets
- Discord : Click here