1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-29 16:30:56 -05:00
denoland-deno/docs/standard_library.md

77 lines
2.7 KiB
Markdown
Raw Normal View History

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
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
library to avoid unintended changes. For example, rather than linking to the
default branch of code, which may change at any time, potentially causing
compilation errors or unexpected behavior:
```typescript
// import the latest release, 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 v$STD_VERSION of std, never changes
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
```
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
TypeScript errors suggesting that some APIs in the `Deno` namespace do not
exist:
2020-05-13 13:19:29 -04:00
```typescript
// main.ts
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
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
error: TS2339 [ERROR]: Property 'utime' does not exist on type 'typeof Deno'. 'Deno.utime' is an unstable API. Did you forget to run with the '--unstable' flag?
2020-05-13 13:19:29 -04:00
await Deno.utime(dest, statInfo.atime, statInfo.mtime);
~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:92:16
2020-05-13 13:19:29 -04:00
TS2339 [ERROR]: Property 'utimeSync' does not exist on type 'typeof Deno'. 'Deno.utimeSync' is an unstable API. Did you forget to run with the '--unstable' flag?
2020-05-13 13:19:29 -04:00
Deno.utimeSync(dest, statInfo.atime, statInfo.mtime);
~~~~~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:103: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
[`lib.deno.unstable.d.ts`](https://github.com/denoland/deno/blob/$CLI_VERSION/cli/dts/lib.deno.unstable.d.ts)
2020-05-13 13:19:29 -04:00
declaration.
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.