npm
目前支持以下几类依赖包管理
官网文档==>package.json doc
dependencies依赖关系在一个简单的对象中指定,该对象将程序包名称映射到版本范围。npm i is-odd -s/-S/--save写成不识别的-d/-A/-B/-C等会默认为--save
devDependencies该脚本将在发布之前运行,因此用户可以使用该功能而无需他们自己对其进行编译。npm i is-odd -D/--save-dev
peerDependencies/peerDependenciesMetaoptionalDependencies像dependencies对象一样。区别在于构建失败不会导致安装失败。运行npm install --no-optional将阻止安装这些依赖项。npm i is-odd -O/--save-option
bundledDependencies/bundleDependencies
依赖关系的指定版本范围
官网文档==>semver
version必须version完全匹配>version必须大于version>=version等等<version<=version~version“大约等效于版本”请参考semver^version“与版本兼容”请参考semver1.2.x 1.2.0、1.2.1等,但不是1.3.0http://...将URL作为依赖项*匹配任何版本""(只是一个空字符串)等价于*version1 - version2与相同>=version1 <=version2。range1 range2如果满足range1或range2,则通过。git...将Git URL作为依赖项user/repo将GitHub URL作为依赖项tag标记并发布为tag See的特定版本npm dist-tagpath/path/path本地路径nnode版本管理工具npm install -g
1 | { |
常用命令整理
官网总共有58个命令,下面整理了部分==>v7版本文档
npm -v查看版本npm version查看所有模块的版本npm search [name]搜索包npm install/i下载当前项目所依赖的包npm ci使用干净的面板安装项目npm install/i --force覆盖安装npm install/i [name]安装包npm install/i [name] -g全局安装模块包npm install --save echarts@4.3.0安装带版本号npm list查看依赖包npm remove/r [name]删除包(仅删除)npm remove/r [name] -S删除包和package.json里面的模块名npm remove -g cxvh-cli-test移除包npm uninstall -g cxvh-cli-test删除模块(remove也可以,只是官网找不到相关文档)npm unlink test需要加上包名testnpm config get registry查看镜像地址,默认为https://registry.npmjs.org/npm config set registry https://registry.npm.taobao.org设置镜像npm config set @types:registry https://registry.npmjs.org/据说这样也可以npm install -g cnpm --registry=https://registry.npm.taobao.org使用淘宝镜像安装依赖npm install -g npm更新npm版本npm config set prefix "D:\nodejs\npm_global"设置全局依赖包位置npm config get prefixnpm config set cache "D:\nodejs\npm_cache"设置缓存npm config get cachenpm init初始化npm login --registry=https://npm.pkg.github.com/登录npm config list查看是否为registry = "https://registry.npmjs.org/"npm set registry https://registry.npmjs.org/改为官方镜像地址npm adduser增加npm用户(会输入登录名密码和邮箱,邮箱必须验证过的)npm whoami查看当前npm用户名(没登录会报错)npm link功能:1.生成全局命令;2.相当于npm install;3.后面可以接本地包路径。npm publish发布
1 | # http://registry.npmjs.org |
常用包
compression字面意思压缩,中间件app.use(compression)放在所有请求前面即可lodash是个工具库,里面工具的算法写的很好cross-env运行跨平台设置和使用环境变量的脚本svg-captcha在node.js中生成svg验证码nodemailer从Node.js发送电子邮件-简单如蛋糕!moment一个JavaScript日期库,用于解析,验证,操作和格式化日期。npm-run-all一个CLI工具,可并行或顺序运行多个npm脚本。npm-check-updates检查npm版本,将package.json依赖项升级到最新版本,而忽略指定的版本。(需要全局安装)nrm切换镜像源sinopia专用/缓存npm存储库服务器glob这是 JavaScript 中的 glob 实现。它使用minimatch 库来进行匹配。(使用 shell 使用的模式匹配文件,比如星星和其他东西。)
TypeScript
typescript是一种用于应用程序级 JavaScript 的语言。ts-node用于 node.js 的 TypeScript 执行和 REPL,具有源映射和本机 ESM 支持。
koa 相关
koanode.js的下一代Web框架koa-routerKoa的路由器中间件。koa-body功能齐全的koa正文解析器中间件。支持multipart,urlencoded和json请求机构。提供与Express的bodyParser-相同的功能multer。koa-jsonJSON精美打印的响应中间件。还将节点对象流转换为二进制。@koa/corsKOA的跨域资源共享(CORS)koa-helmet安全头koa-compose整合 KOA 的中间件koa-compress压缩Koa中间件koa-jwt用于验证JSON Web令牌的Koa中间件。jsonwebtokenJSON Web令牌签名和验证。
webpack 相关
webpack-merge为Webpack设计的合并terser-webpack-plugin该插件使用terser来缩小JavaScript(webpack5 自带不用安装)copy-webpack-plugin将单个文件或整个目录(已存在)复制到构建目录。
sql
mongoose是设计用于异步环境的MongoDB对象建模工具。Mongoose 支持 promises 和回调。
脚手架相关
import-local允许全局安装的软件包使用自身的本地安装版本yargs通过解析参数并生成优雅的用户界面来帮助您构建交互式命令行工具lerna基于git+npm的多package项目管理工具npmlog打印日志用的semver版本号比对colors打印日志颜色root-check1.检查root权限 2.如果是则降级进程的权限 3.如果降级失败则阻止访问user-home获取用户主目录的路径path-exists检查路径是否存在minimist解析参数选项dotenv环境变量设置url-join将所有参数连接在一起并规范化结果urlcommandernode.js命令行界面的完整解决方案。npminstall让我们npm install轻松快捷。fs-extra添加本机fs模块中未包含的文件系统方法,并为这些fs方法添加promise支持。它还graceful-fs用于防止EMFILE错误。应该是的替代品fs。inquirer一组常见的交互式命令行用户界面。(脚手架上下选择)cli-spinner加载效果rxjs周下载量2000W+mute-stream输入流ansi-escapes用于操作终端的 ANSI 转义码simple-git用于git在任何node.js应用程序中运行命令的轻量级界面。terminal-link在终端中创建可点击的链接ali-ossaliyun OSS(对象存储服务)js 客户端,适用于 Node 和浏览器环境。
npm-run-all 配合 vscode 使用
package.json
1 | { |
launch.json
1 | { |
按照上面配置和就可以在vscode调试打断点了
npm-check-updates 检查版本
1 | # 安装 |
使用nrm切换镜像源
npm i -g nrm全局安装nrm ls查看源列表nrm config get registry查看当前源地址nrm use taobao切换淘宝源nrm use cnpm切换cnpm源nrm use yarn切换yarn源nrm use npm切换npm源- 安装后报错:
internal/validators.js:124 throw new ERR_INVALID_ARG_TYPE(name, 'string', value); - 这是找不到
win的用户目录了,找到代码const NRMRC = path.join(process.env.HOME, '.nrmrc');改为const NRMRC = path.join(process.env.HOME||process.env.HOMEPATH, '.nrmrc');即可。 github仓库源码如下,感觉已经没人维护了1
2const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
const NPMRC = path.join(process.env.HOME, '.npmrc');
使用n切换node版本
npm install n -gn 14.16.1安装指定版本n stable安装稳定版本n latest安装最新版本n rm 14.10.1删除版本n use 14.10.11 server.js指定node版本执行脚本n输入后回车,按上下切换版本,enter选中- 选中后
node -v查看不生效如何解决?which node查看当前node安装版本(如:/opt/node,记住这个路径,下面用)vim ~/.bash_profile配置环境变量export N_PREFIX=/opt/node末尾插入,/opt/node改为which node查看到的路径export PATH=$N_PREFIX/bin:$PATH末尾插入,保存并退出source ~/.bash_profile使修改生效
n 14.16.1重新安装node,安装完成后可切换版本- 如果报错可使用
sudo安装:sudo n v14.16.1
- 如果报错可使用
- 选中后
小技巧
npm init cxvh-cli就相当于初始化cxvh-cli项目一样,init结束需要npm install
error
npm install 报错:npm ERR! Maximum call stack size exceeded
使用淘宝镜像
npm install abc --registry=https://registry.npm.taobao.orgornpm config set registry http://registry.npm.taobao.org/
gitbook 报错:node_modules\_npm@5.1.0@npm\node_modules\graceful-fs\polyfills.js:287
切换
node版本为10.21.0
npm login报错
1 | npm ERR! code ETIMEDOUT |
npm config get registry
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BARAN的小站🔥🔥🔥!





