Make npm install
fast and handy.
$ npm install npminstall -g
It is integrated in cnpm.
$ npm install cnpm -g
$ cnpm install // will use npminstall
Usage:
npminstall
npminstall <pkg>
npminstall <pkg>@<tag>
npminstall <pkg>@<version>
npminstall <pkg>@<version range>
npminstall <alias>@npm:<name>
npminstall <folder>
npminstall <tarball file>
npminstall <tarball url>
npminstall <git:// url>
npminstall <github username>/<github project>
Can specify one or more: npm install ./foo.tgz bar@stable /some/folder
If no argument is supplied, installs dependencies from ./package.json.
Options:
--production: won't install devDependencies
--save, --save-dev, --save-optional: save installed dependencies into package.json
-g, --global: install devDependencies to global directory which specified in `$ npm config get prefix`
-r, --registry: specify custom registry
-c, --china: specify in china, will automatically using chinese npm registry and other binary's mirrors
-d, --detail: show detail log of installation
--trace: show memory and cpu usages traces of installation
--ignore-scripts: ignore all preinstall / install and postinstall scripts during the installation
--no-optional: ignore optionalDependencies during the installation
--forbidden-licenses: forbit install packages which used these licenses
--engine-strict: refuse to install (or even consider installing) any package that claims to not be compatible with the current Node.js version.
--flatten: flatten dependencies by matching ancestors dependencies
--registry-only: make sure all packages install from registry. Any package is installed from remote(e.g.: git, remote url) cause install fail.
--cache-strict: use disk cache even on production env
Usage:
npmuninstall <pkg>
npmuninstall <pkg>@<version>
npmuninstall <pkg>@<version> [<pkg>@<version>]
npminstall <alias>@npm:<name>
Usage:
npmlink <folder>
$ npm install npminstall --save
const npminstall = require('npminstall');
(async () => {
await npminstall({
// install root dir
root: process.cwd(),
// optional packages need to install, default is package.json's dependencies and devDependencies
// pkgs: [
// { name: 'foo', version: '~1.0.0' },
// ],
// install to specific directory, default to root
// targetDir: '/home/admin/.global/lib',
// link bin to specific directory (for global install)
// binDir: '/home/admin/.global/bin',
// registry, default is https://registry.npmjs.org
// registry: 'https://registry.npmjs.org',
// debug: false,
// storeDir: root + 'node_modules',
// ignoreScripts: true, // ignore pre/post install scripts, default is `false`
// forbiddenLicenses: forbit install packages which used these licenses
});
})().catch(err => {
console.error(err);
});
npm install file:eslint-rule
)npm install ./rule.tgz
)npm install https://github.com/indexzero/forever/tarball/v0.5.6
)npm install git://github.com/timaschew/cogent#fix-redirects
)-g, --global
)preinstall
, install
, postinstall
scripts--production
modesave
, save-dev
, save-optional
ignore-scripts
This project is inspired by pnpm, and has a similar store structure like pnpm. You can read pnpm vs npm to see the different with npm.
npminstall
will collect all postinstall scripts, and execute them until all dependencies installed.node_modules
directoryTwo rules:
options.storeDir
's node_modules
.node_modules
.e.g.:
{ "dependencies": { "debug": "2.2.0" } }
(root){ "dependencies": { "ms": "0.7.1" } }
app/
├── package.json
└── node_modules
├── _debug@2.2.0@debug
│ ├── node_modules
│ │ └── ms -> ../../_ms@0.7.1@ms
├── _ms0.7.1@ms
├── debug -> _debug@2.2.0@debug
└── ms -> _ms@0.7.1@ms # for peerDependencies
npminstall will always try to install the maximal matched version of semver:
root/
koa@1.1.0
mod/
koa@~1.1.0
# will install two different version of koa when use npminstall.
you can enable flatten mode by --flatten
flag, in this mod, npminstall will try to use ancestors' dependencies to minimize the dependence-tree.
root/
koa@1.1.0
mod/
koa@~1.1.0
root/
koa@1.1.0
mod/
koa@^1.1.0
# both the same version: 1.1.0
root/
koa@~1.1.0
mod/
koa@^1.1.0
# both the same version: 1.1.2
root/
mod/
koa@^1.1.0
moe/
koa@~1.1.0
# two different versions
npminstall will always treat n.x
and n.m.x
as flattened
root/
koa@1.1.0
mod/
koa@1.1.x
both the same version: 1.1.0
root/
koa@~1.1.0
mod/
koa@1.x
both the same version: 1.1.2
support selective version resolutions like yarn. which lets you define custom package versions inside your dependencies through the resolutions field in your package.json
file.
resolutions also supports [npm alias)(https://docs.npmjs.com/cli/v7/commands/npm-install). It's a workaround feature to fix some archived/inactive/ package by uploading your own bug-fixed version to npm registry.
see use case at unittest package.json.
https://github.com/cnpm/npminstall-benchmark
cli | real | user | sys |
---|---|---|---|
npminstall | 0m10.908s | 0m8.733s | 0m4.282s |
npminstall with cache | 0m8.815s | 0m7.492s | 0m3.644s |
npminstall --no-cache | 0m10.279s | 0m8.255s | 0m3.932s |
pnpm | 0m13.509s | 0m11.650s | 0m4.443s |
npm | 0m28.171s | 0m26.085s | 0m8.219s |
npm with cache | 0m20.939s | 0m19.415s | 0m6.302s |
see https://github.com/pnpm/pnpm#benchmark
npminstall babel-preset-es2015 browserify chalk debug minimist mkdirp
real 0m8.929s user 0m5.606s sys 0m2.913s
pnpm i babel-preset-es2015 browserify chalk debug minimist mkdirp
real 0m12.998s user 0m8.653s sys 0m3.362s
npm i babel-preset-es2015 browserify chalk debug minimist mkdirp
real 1m4.729s user 0m55.589s sys 0m23.135s
fengmk2 |
dead-horse |
ibigbug |
afc163 |
yesmeck |
popomore |
---|---|---|---|---|---|
welladamm |
weihong1028 |
LeoYuan |
cnlon |
magicae |
marcbachmann |
snyk-bot |
atian25 |
tommytroylin |
wssgcg1213 |
yibn2008 |
hyj1991 |
vuchan |
This project follows the git-contributor spec, auto updated at Wed May 08 2019 18:02:56 GMT+0800
.
原文来自语雀专栏:www.yuque.com/egg/nodejs/… 作者:苏千、天猪 简单回顾 npminstall 是 cnpm 的核心逻辑库之一,它通过 link 的方式来安装 Node.js 依赖,可以极大的提升安装速度。 回顾 npminstall 第一版的代码,默认支持 Node.js 4,那个时候 async/await 还没成为 Node.js 的默认功能,各种三方库还是 ca
npm安装appium报错: Error installing Chromedriver: Request failed with status code 404 [16:16:30] Error: Request failed with status code 404 ] appium-android-driver@4.43.1 › appium-chromedriver@^4.13.0 scr
参考:https://blog.csdn.net/qq_30627241/article/details/104931524 博主:hui_life 排查了下发现是因为sass安装时获取源的问题,先修改sass安装的源 npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass 1 再运行npm install
这里有常规的解决方法 1、输出为淘宝路径 npm config set registry https://registry.npm.taobao.org 检查是否成功 npm config get registry 输出为淘宝路径即为成功 npm install 可以继续安装 2、我遇到了这种情况,安装淘宝路径之后。还是会卡。 然后就卸载node 重新安装node。 再次操作九可以成功了。
npminstall WARN package.json not exists: C:\Users\Administrator\package.json 因为你直接运行了cnpm install,这个命令要在项目路径下运行,例如 我的项目名子叫demo,那么我就 cd demo cd 到项目文件夹之后,就可以运行cnpm install,然后就开始下载了
这两个多月一直开发小程序,今天准备开发公众号,使用Vue-cli 脚手架搭建项目时候, npm install 就报错误,我就奇葩了!心里一万个曹尼玛....... 因为之前使用安装包的提示升级,自己就手动去升级了,经过百度了解,才知道是因为 npm 版本导致,我用node版本 8.9.3的,之前没有安装之前没有毛病, 按照把 npm 版本降到5.多就可以,我就下载 5.5.1的版本 npm
解决 [npminstall:runscript:error] node-sass@4.13.1 scripts.postinstall run “node scripts/build.js“_m0_58803607的博客-CSDN博客