2020-05-13 13:19:29 -04:00
|
|
|
# Standard library
|
|
|
|
|
|
|
|
Deno provides a set of standard modules that are audited by the core team and
|
|
|
|
are guaranteed to work with Deno.
|
|
|
|
|
|
|
|
Standard library is available at: https://deno.land/std/
|
|
|
|
|
|
|
|
## Versioning and stability
|
|
|
|
|
|
|
|
Standard library is not yet stable and therefore it is versioned differently
|
|
|
|
than Deno. For latest release consult https://deno.land/std/ or
|
2020-06-18 06:13:56 -04:00
|
|
|
https://deno.land/std/version.ts. The standard library is released each time
|
|
|
|
Deno is released.
|
2020-05-13 13:19:29 -04:00
|
|
|
|
|
|
|
We strongly suggest to always use imports with pinned version of standard
|
2020-06-18 06:13:56 -04:00
|
|
|
library to avoid unintended changes. For example, rather than linking to the
|
|
|
|
master branch of code, which may change at any time, potentially causing
|
|
|
|
compilation errors or unexpected behavior:
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
// imports from master, this should be avoided
|
|
|
|
import { copy } from "https://deno.land/std/fs/copy.ts";
|
|
|
|
```
|
|
|
|
|
|
|
|
instead, used a version of the std library which is immutable and will not
|
|
|
|
change:
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
// imports from v0.50.0 of std, never changes
|
2020-07-31 05:12:20 -04:00
|
|
|
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
|
2020-06-18 06:13:56 -04:00
|
|
|
```
|
2020-05-13 13:19:29 -04:00
|
|
|
|
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
Some of the modules provided in standard library use unstable Deno APIs.
|
|
|
|
|
|
|
|
Trying to run such modules without `--unstable` CLI flag ends up with a lot of
|
2020-06-18 06:13:56 -04:00
|
|
|
TypeScript errors suggesting that some APIs in the `Deno` namespace do not
|
|
|
|
exist:
|
2020-05-13 13:19:29 -04:00
|
|
|
|
|
|
|
```typescript
|
|
|
|
// main.ts
|
2020-07-31 05:12:20 -04:00
|
|
|
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
|
2020-05-13 13:19:29 -04:00
|
|
|
|
|
|
|
copy("log.txt", "log-old.txt");
|
|
|
|
```
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ deno run --allow-read --allow-write main.ts
|
|
|
|
Compile file:///dev/deno/main.ts
|
2020-07-31 05:12:20 -04:00
|
|
|
Download https://deno.land/std@$STD_VERSION/fs/copy.ts
|
|
|
|
Download https://deno.land/std@$STD_VERSION/fs/ensure_dir.ts
|
|
|
|
Download https://deno.land/std@$STD_VERSION/fs/_util.ts
|
2020-05-13 13:19:29 -04:00
|
|
|
error: TS2339 [ERROR]: Property 'utime' does not exist on type 'typeof Deno'.
|
|
|
|
await Deno.utime(dest, statInfo.atime, statInfo.mtime);
|
|
|
|
~~~~~
|
2020-07-31 05:12:20 -04:00
|
|
|
at https://deno.land/std@$STD_VERSION/fs/copy.ts:90:16
|
2020-05-13 13:19:29 -04:00
|
|
|
|
|
|
|
TS2339 [ERROR]: Property 'utimeSync' does not exist on type 'typeof Deno'.
|
|
|
|
Deno.utimeSync(dest, statInfo.atime, statInfo.mtime);
|
|
|
|
~~~~~~~~~
|
2020-07-31 05:12:20 -04:00
|
|
|
at https://deno.land/std@$STD_VERSION/fs/copy.ts:101:10
|
2020-05-13 13:19:29 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
Solution to that problem requires adding `--unstable` flag:
|
|
|
|
|
|
|
|
```shell
|
2020-06-10 20:24:41 -04:00
|
|
|
deno run --allow-read --allow-write --unstable main.ts
|
2020-05-13 13:19:29 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
To make sure that API producing error is unstable check
|
2020-07-23 10:05:36 -04:00
|
|
|
[`lib.deno.unstable.d.ts`](https://github.com/denoland/deno/blob/master/cli/dts/lib.deno.unstable.d.ts)
|
2020-05-13 13:19:29 -04:00
|
|
|
declaration.
|
|
|
|
|
2020-06-18 06:13:56 -04:00
|
|
|
This problem should be fixed in the near future. Feel free to omit the flag if
|
|
|
|
the particular modules you depend on compile successfully without it.
|