Skip to content

包管理工具

npm

基础命令

  • npm -v 查看npm的版本
  • npm version 查看所有模块的版本
  • npm init 创建package.json,作用是记录当前node项目中依赖哪些第三方包,当我们把node项目发布时,就可以删除node项目中已安装的第三方包;
  • npm i/install 安装包
  • npm s/search 包名 搜索包
  • npm r/remove 删除包
  • npm uninstall 包名 卸载包
  • npm root -g 查看全局包安装位置
  • npm config ls 查看当前npm配置
  • npm outdated 查看需要升级的包
  1. 一次安装多个包 (1)npm i gulp-sass gulp-debug gulp-pug

    (2)npm i gulp{-sass,-debug,-pug}

支持的参数

--save 功能:之前旧的npm命令如果不带这个参数,则在json文件中不会产生依赖项;

-D == --save-dev 开发依赖

-S == --save 添加到依赖

-P == --save-prod 添加到生产环境

-g 全局安装,一般都是一些工具才使用这个;

建议只在开发时使用的插件,单独安装到开发依赖,不要直接添加到依赖里,安装时需要-D,因为默认安装都是安装在dependencies里的,是用于生产需要的;

  1. 以版本号安装 下载包时,可以在包名后面@加上版本号,如果不指定版本号,则默认下载最新的;

    转淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org

    淘宝镜像官网:npm.taobao.org;

  2. 获取包信息

    • npm view vuenpm v vue

    • 单独获取包的最新版本号:npm v vue version

    • 升级最新包:npm i -g yarn@latest

源管理

  • 查看源:npm config get registry

  • 修改源:npm config set registry 源地址

  • 临时改变源:npm --registry=https://registry.npmmirror.com/

镜像源地址:

其他命令

  1. 显示可用的script 运行命令npm run

image

license协议

image

  • MIT:只要用户在项目副本中包含了版权声明和许可声明,他们就可以拿你的代码做任何想做的事情,你也无需承担任何责任
  • Apache:类似于MIT,同时还包含了贡献者向用户提供专利授权相关的条款
  • GPL:修改项目代码的用户两次分发源码或二进制代码时,必须公布他的相关修改

对包创建软链接,通常用做本地开发组件时的调试

  1. 到需要创建link的包,执行npm link
  2. 到需要使用link的包的项目下,执行 npm link 项目名
  3. 在项目下的package.json文件下写一个假的包名依赖以及版本号,之后就可以直接在项目中使用了
  4. npm unlink 可以撤消link的包

npm修改全局安装路径

默认全局路径在c盘,c盘为系统盘,系统盘一般容量比较小,不好清理,建议配置一下默认的路径

配置了全局路径,切换版本号也不用担心找不到全局安装的npm包了

bash
npm config set prefix "D:\node_global"
npm config set cache "D:\node_cache"

修改之后查询:npm bin -g

发布管理

发布管理时需要注意使用npm官方源,一定要切换回来

  • npm adduser 用户登录
  • npm whoami 查询当前登录用户,报错表示未登录
  • npm publish 发布项目

package管理

  • name 名字

  • version 版本管理

  • private 是否私有

  • description 包描述

  • author 作者

  • license 协议

  • keywords 关键词

  • homepage 项目主页

  • files 发布文件列表(数组),如果不写默认取.gitignore里面不需要上传的文件,也有的文件会始终发布上去,比如package.json,readme.md

  • repository 仓库

    • type 类型,如git
    • url 仓库地址
  • main 入口文件

  • module 模板文件

  • types ts类型定义文件

  • scripts 执行脚本(下面列出一些勾子函数)

    • prepublish 发布前做的事情
  • dependencies 项目运行时依赖的包

  • devDependencies 开发依赖时的包

  • peerDependencies 当别人安装你发布的包时,不会去自动安装peer的包,而是使用warning告诉用户你需要安装这些依赖,在peer填写的依赖之后,可以直接将自己的依赖扔到开发依赖

  • engines 限制各包安装版本

  • exports 管理导入的部分

    json
    {
        ".": {
          "import": "./dist/component.js",
          "require": "./dist/component.umd.cjs"
        },
        "./lib": {
          "import": "./lib/index.ts",
          "require": "./lib/index.ts"
        },
        "./style.css": "./dist/style.css"
    }

    引入时:import 'component/style.css' 则会到指定的位置

官方文档:https://docs.npmjs.com/cli/v7/configuring-npm/package-json/

忽略文件不上传

创建.npmignore文件,和.gitignore差不多,希望哪些不发到npm包上面;

版本管理

自动修改版本号

npm version <update_type>

type值为:

  • patch 0.0.
  • minor 1.*.0
  • major *.0.0

其他npm管理包命令

js
// 撤销整个包
npm unpublish --force 包名

// 撤销某个版本
npm unpublish 包名@版本号

版本规范:semver.org

npm短域

通过访问 npm.im/<package>可直接跳转到npmjs对应的包地址

其他依赖镜像

设置node使用的镜像地址

bash
npm config set disturl https://npmmirror.com/mirrors/node/

设置淘宝镜像也不管用,安装慢的,建议设置下以下镜像

bash
# 设置常用模块的淘宝镜像
npm config set sass_binary_site https://npmmirror.com/mirrors/node-sass/
npm config set sharp_dist_base_url https://npmmirror.com/mirrors/sharp-libvips/
npm config set electron_mirror https://npmmirror.com/mirrors/electron/
npm config set puppeteer_download_host https://npmmirror.com/mirrors/
npm config set phantomjs_cdnurl https://npmmirror.com/mirrors/phantomjs/
npm config set sentrycli_cdnurl https://npmmirror.com/mirrors/sentry-cli/
npm config set sqlite3_binary_site https://npmmirror.com/mirrors/sqlite3/
npm config set python_mirror https://npmmirror.com/mirrors/python/

建议有新依赖包时,配置script,需要先安装:npm i -g rimraf

bash
{
  "scripts": {
    "reinstall": "rimraf node_modules && npm i"
  }
}

参考:聊聊 NPM 镜像那些险象环生的坑

修改node_modules

推荐使用patch-package:https://github.com/ds300/patch-package

windows可以使用mklink命令,仅限于cmd 终端

mac 需使用ln 命令

bash
# MKLINK [[/D] | [/H] | [/J]] 链接名称 目标
# /d 给目录创建符号链接,简称符号链接、软链接;
# /h 创建硬链接,简称硬链接;
# /j 给目录创建联接点,简称软链接。

#以下例子将F:\project\demo 软链接到 D:\demo 目录下
mklink /j "D:\demo" "F:\project\demo"

创建软链接的好处是便于本地开发工具包使用

同时安装两个版本的包

bash
npm install echarts@5.0.0 -S
npm install echarts4@npm:echarts@4.0.0 -S

yarn

npm的替代产品

  1. 特点

    • 有缓存机制、速度更快
    • 更可靠、安全
    • 异步安装
  2. 安装 npm install -g yarn

  3. 使用

    • yarn 安装依赖
    • yarn add <packageName> 下载
    • yarn remove <packageName> 删除
    • yarn upgrade <packageName> 更新
    • yarn init
    • yarn install 生成package.json
    • yarn global add <packageName> 安装全局(需要配置环境变量,通过查看全局路径获取)
    • yarn global bin 查看全局路径;
    • yarn cache dir 查看缓存路径
    • yarn link 使当前项目可以被其他项目引用
    • yarn link pkgName 安装link的项目

安装node-sass卡住的解决办法

bash
yarn config set sass_binary_site https://npmmirror.com/mirrors/node-sass/ -g

pnpm

安装速度更快,安装过的版本直接引用快捷路径,不再安装

介绍:https://pnpm.io/zh/motivation

安装npm install -g pnpm

升级pnpm add -g pnpm

使用

  • pnpm install 安装依赖
  • pnpm add <pkg> 安装包,pkg还可以是git地址
  • pnpm update <pkg> 更新包,alias: up
  • pnpm remove <pkg> 卸载包
  • pnpm link --global 使当前本地包可在系统范围内使用
  • pnpm link --global <pkg> 安装在全局link的包,如果不好用就用路径安装
  • pnpm link ../demo 在当前项目安装demo项目的软链接
  • pnpm unlink <pkg> 卸载link包
  • pnpm -C demo dev:指定demo目录执行dev命令

nrm

npm源管理器,可以快速地在npm源间切换

安装:npm i -g nrm;

使用:

nrm ls 查看所有可选的源

nrm use taobao 切换对应的源

nrm test npm 测试相应源的响应时间

nrm add registr http://.... 增加新的源

nrm del registr 删除对应的源

注意:nrm是用来切换源的 装包工具还是使用npm或yarn

nvm

是一款node切换版本的工具,用法和nrm类似

注意:安装之前请将之前的nodejs文件夹修改一下名字,之后再进行安装,避免出现使用错误情况;默认路径:C:\Program Files\nodejs

  1. 下载 下载地址: https://github.com/coreybutler/nvm-windows/releases

    github进不去,可以进这个地址:https://lanzoui.com/ic14vtc

    image

    nvm-noinstall.zip: 这个是绿色免安装版本,但是使用之前需要配置

    nvm-setup.zip:这是一个安装包,下载之后点击安装,无需配置就可以使用,方便。

    Source code(zip):zip压缩的源码

    Sourc code(tar.gz):tar.gz的源码,一般用于*nix系统

  2. 安装

    image

按照提示完成安装即可,安装完成后可以检测一下是否安装成功

在cmd命令行输入nvm,如果出现nvm版本号和一系列帮s助指令,则说明nvm安装成功。

image

  1. 修改settings.txt

    在你安装的目录下找到settings.txt文件,打开后加上

    默认安装目录C:\Users\{UserName}\AppData\Roaming\nvm

    node_mirror: https://registry.npmmirror.com/mirrors/node/ 
    npm_mirror: https://registry.npmmirror.com/mirrors/npm/

    这一步主要是将npm镜像改为淘宝的镜像,可以提高下载速度。

    image

  2. node.js安装 可以先使用 nvm list 查看本地已安装的版本

    image

    然后使用 nvm list available 查看所有版本

    image

    使用 nvm insttall 版本号 安装制定的版本,如nvm install 12.2.0

    image

  3. NVM常用命令

  • nvm list 查看已经安装的版本
  • nvm list installed 查看已经安装的版本
  • nvm list available 查看网络可以安装的版本
  • nvm version 查看当前的版本
  • nvm install 安装最新版本nvm
  • nvm use <version> ## 切换使用指定的版本node
  • nvm ls 列出所有版本
  • nvm current 显示当前版本
  • nvm alias <name> <version> ## 给不同的版本号添加别名
  • nvm unalias <name> ## 删除已定义的别名
  • nvm reinstall-packages <version> ## 在当前版本node环境下,重新全局安装指定版本号的npm包
  • nvm on 打开nodejs控制
  • nvm off 关闭nodejs控制
  • nvm proxy 查看设置与代理
  • nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
  • nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是: https://github.com/npm/npm/archive/.
  • nvm uninstall <version> 卸载制定的版本
  • nvm use [version] [arch] 切换制定的node版本和位数
  • nvm root [path] 设置和查看root路径

文档:各平台安装nvm教程

yalc

更好的管理本地包联调

  • 发布包:yalc publish
  • 添加包:yalc add *
  • 更新包:yalc push
  • 移除包:yalc remove *

常用CDN地址

包对比

参考地址

  1. 教程:https://blog.csdn.net/guochanof/article/details/90118710

Released under the MIT License.