Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLuke Karrys <luke@lukekarrys.com>2022-07-21 19:40:55 +0300
committerGitHub <noreply@github.com>2022-07-21 19:40:55 +0300
commit9905d0e24c162c3f6cc006fa86b4c9d0205a4c6f (patch)
treea3cfb0299f07f902465ecf3850496ebeea01900a /lib
parent4c945302fc2aa6854dc014fe31d6f5dfa96f7b52 (diff)
fix: don't fail immediately if cache dir is not accessible (#5197)
This also changes all the log messages about not being able to create initial directories and files to `log.verbose` since we know run those commands on init. There are a lot of valid reasons why those might fail, and we don't want to show a warning for them every time. Fixes: #4769 Fixes: #4838 Fixes: #4996
Diffstat (limited to 'lib')
-rw-r--r--lib/npm.js10
-rw-r--r--lib/utils/log-file.js6
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/npm.js b/lib/npm.js
index 2197f11a5..66111cab8 100644
--- a/lib/npm.js
+++ b/lib/npm.js
@@ -241,16 +241,18 @@ class Npm extends EventEmitter {
await this.time('npm:load:configload', () => this.config.load())
// mkdir this separately since the logs dir can be set to
- // a different location. an error here should be surfaced
- // right away since it will error in cacache later
+ // a different location. if this fails, then we don't have
+ // a cache dir, but we don't want to fail immediately since
+ // the command might not need a cache dir (like `npm --version`)
await this.time('npm:load:mkdirpcache', () =>
- fs.mkdir(this.cache, { recursive: true, owner: 'inherit' }))
+ fs.mkdir(this.cache, { recursive: true, owner: 'inherit' })
+ .catch((e) => log.verbose('cache', `could not create cache: ${e}`)))
// its ok if this fails. user might have specified an invalid dir
// which we will tell them about at the end
await this.time('npm:load:mkdirplogs', () =>
fs.mkdir(this.logsDir, { recursive: true, owner: 'inherit' })
- .catch((e) => log.warn('logfile', `could not create logs-dir: ${e}`)))
+ .catch((e) => log.verbose('logfile', `could not create logs-dir: ${e}`)))
// note: this MUST be shorter than the actual argv length, because it
// uses the same memory, so node will truncate it if it's too long.
diff --git a/lib/utils/log-file.js b/lib/utils/log-file.js
index 9cf6513be..d62329c85 100644
--- a/lib/utils/log-file.js
+++ b/lib/utils/log-file.js
@@ -204,7 +204,9 @@ class LogFiles {
this.#files.push(logStream.path)
return logStream
} catch (e) {
- log.warn('logfile', `could not be created: ${e}`)
+ // If the user has a readonly logdir then we don't want to
+ // warn this on every command so it should be verbose
+ log.verbose('logfile', `could not be created: ${e}`)
}
}
@@ -226,7 +228,7 @@ class LogFiles {
)
// Always ignore the currently written files
- const files = await glob(globify(logGlob), { ignore: this.#files.map(globify) })
+ const files = await glob(globify(logGlob), { ignore: this.#files.map(globify), silent: true })
const toDelete = files.length - this.#logsMax
if (toDelete <= 0) {