1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-01-08 15:19:40 -05:00

Use proper directory for cache files (#1763)

Operating systems have defined directories for cache files.
That allows them to do smart things such as leaving them out when doing a backup,
or deleting them when disk space gets low.

Also a %home%\.deno folder on windows made no sense whatsoever.

Fixes #481
This commit is contained in:
Philipp A 2019-02-13 14:57:00 +01:00 committed by Ryan Dahl
parent c468be64ed
commit e782ba1a6f
2 changed files with 16 additions and 4 deletions

View file

@ -63,7 +63,13 @@ impl DenoDir {
) -> std::io::Result<Self> {
// Only setup once.
let home_dir = dirs::home_dir().expect("Could not get home directory.");
let default = home_dir.join(".deno");
let fallback = home_dir.join(".deno");
// We use the OS cache dir because all files deno writes are cache files
// Once that changes we need to start using different roots if DENO_DIR
// is not set, and keep a single one if it is.
let default = dirs::cache_dir()
.map(|d| d.join("deno"))
.unwrap_or(fallback);
let root: PathBuf = custom_root.unwrap_or(default);
let gen = root.as_path().join("gen");

View file

@ -359,9 +359,15 @@ and yet it accessed the network. The runtime has special access to download
imports and cache them to disk.
Deno caches remote imports in a special directory specified by the `$DENO_DIR`
environmental variable. It default to `$HOME/.deno` if `$DENO_DIR` is not
specified. The next time you run the program, no downloads will be made. If the
program hasn't changed, it won't be recompiled either.
environmental variable. It defaults to the system's cache directory if
`$DENO_DIR` is not specified. The next time you run the program, no downloads
will be made. If the program hasn't changed, it won't be recompiled either. The
default directory is:
- On Linux/Redox: `$XDG_CACHE_HOME/deno` or `$HOME/.cache/deno`
- On Windows: `%LOCALAPPDATA%/deno` (`%LOCALAPPDATA%` = `FOLDERID_LocalAppData`)
- On macOS: `$HOME/Library/Caches/deno`
- If something fails, it falls back to `$HOME/.deno`
**But what if `https://deno.land/` goes down?** Relying on external servers is
convenient for development but brittle in production. Production software should