npm-autoinit

Silence "ENOENT package.json" warnings for npm

Usage no npm install needed!

<script type="module">
  import npmAutoinit from 'https://cdn.skypack.dev/npm-autoinit';
</script>

README

npm

npm-autoinit

Build Status Dependency Status

If you miss package.json in the directory npm is working in, it will complain.

$ npm install thingy
…
npm WARN ENOENT ENOENT: no such file or directory, open '/tmp/tmpdir/R3semq/package.json'
npm WARN EPACKAGEJSON /tmp/tmpdir/R3semq No description
npm WARN EPACKAGEJSON /tmp/tmpdir/R3semq No repository field.
npm WARN EPACKAGEJSON /tmp/tmpdir/R3semq No README data
npm WARN EPACKAGEJSON /tmp/tmpdir/R3semq No license field.

Or even:

$ npm ls
…
npm ERR! error in /tmp/tmpdir/R3semq: ENOENT: no such file or directory, open '/tmp/tmpdir/R3semq/package.json'

I often use temporary directories to play/experiment with packages and hustling with package.json every time I want to check out some package is not an option for me.

This module will make npm run npm init --yes automatically for you if it sees fit.

See https://github.com/npm/npm/issues/9161.

How

This package takes advantage of onload-script npm config option.

A node module to require() when npm loads. Useful for programmatic usage.

onload-script executes before any work on npm command is done, so if we create package.json file here (and block while we do it) the problem is solved.

Install

$ npm install -g npm-autoinit

After that, add npm-autoinit/autoinit as npm onload script:

$ npm config set onload-script npm-autoinit/autoinit

API

autoinit(dir, cb(err))

Check if package.json is present, and if it's not run npm init -y.

License

MIT