Say goodbye to npm install, no need npm install, throw away npm install.
example
In your project,
- add
npx -y ai-installto package.json->scripts->start/build.
{
"name": "ai-install-demo",
"scripts": {
"start": "npx -y ai-install && xxx serve --open",
"build": "npx -y ai-install && xxx build"
},
"devDependencies": {
"xxx": "x.y.z"
}
}
- add a new file npm-start.sh, the content is:
npm start
After git clone, just double click npm-start.sh to start, no typing command.
because
npx -y ai-install
executing npm install if not installed.
npx run an arbitrary command from an npm package (either one installed locally, or fetched remotely).
think
Does it save a second of typing npm i? no!
After the installation of npm i, it was not seamlessly connected to npm start, which wasted 10 ~ 60 seconds.
If you use npx -y ai-install, then npm start will likely start a minute earlier.
yarn & pnpm
npx -y ai-install
In yarn project, auto executing yarn install if not installed.
In pnpm project, auto executing pnpm install if not installed.
src
package.json defined a commond ai-install.
{
"name": "ai-install",
"version": "1.0.0",
"description": "Say goodbye to `npm install`, no need `npm install`, throw away `npm install`.",
"main": "index.js",
"bin": {
"ai-install": "index.js"
}
}
index.js executing npm/yarm/pnpm install if not installed.
#!/usr/bin/env node
var fs = require('fs');
var child_process = require('child_process');
if (!fs.existsSync('node_modules')) {
if(fs.existsSync('yarn.lock')){
child_process.execSync('yarn install', { stdio: 'inherit' });
} else if (fs.existsSync('pnpm-lock.yaml')){
child_process.execSync('pnpm install', { stdio: 'inherit' });
} else {
child_process.execSync('npm install', { stdio: 'inherit' });
}
}
Top comments (4)
This only checks for the presence of a
node_modulesdirectory, so you'll still have to manually run the install command after pulling changes or switching branches or whatnot.It is suitable for small projects and package.json does not change frequently.
It doesn't handle Monorepos with multiple
node_modulesfolder.I think Monorepos is only one node_modules folder.
if there are many node_modules, you can add 'npx -y ai-install' in every scripts or run 'npx -y ai-install' at every package.json dir.