npm的使用

npm

1. npm介绍

  • npm是javascript的依赖管理工具管理工具,全称 node package manager
  • npm是随着node一起安装的,不同版本的node对应不同版本的npm
  • 如何检测能否使用npm
    • npm --version

2. npm的命令

  • npm init命令用来初始化某个文件夹为npm管理

    • 输入此命令会出现很多次提示,需要我们来填写内容

      复制代码
        package name      包名
        version          版本
        description      描述
        main             入口文件
        scripts          支持的脚本,默认是一个空的 test
        keywords         关键字,有助于在人们使用 npm search 搜索时发现你的项目
        author           作者
        license:         版权许可证(默认:ISC)
        dependencies     在生产环境中需要用到的依赖
        devDependencies  在开发、测试环境中用到的依赖
    • npm init -y使用默认的内容

    • 执行此命令成功后会在当前文件夹生成package.json文件

  • npm install命令,用于下载安装依赖,可简写 npm i

    • npm i 依赖名称
    • npm i 依赖名称@依赖对应的版本号
    • 安装的依赖名称和可使用的版本好可以在www.npmjs.com网站搜索,比如说我们要安装jquery
    • 安装的依赖不加版本号默认下载最新版本
    • 安装依赖成功之后会在本地生成一个node_modules文件夹和package-lock.json

    • npm i 指向此命令可以根据项目里面的package.json记录,自动安装对应的依赖和版本
  • npm uninstall命令,用于卸载安装的依赖,可简写 npm un

    • npm uninstall 依赖名称
    • 卸载的时候不需要加版本号,因为一个项目里面一个依赖只能有一个版本
  • npm update命令用来更新依赖

    • npm update 依赖名称
    • 一般不推荐使用此命令,会直接安装新版本覆盖老版本
  • npm run命令用来指向package.json里面scripts配置的命令

    复制代码
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1"
            "dev": "node a.js",
            "start": "node b.js"
        },
    • 执行npm run dev就会自动到package.json找到后面的语句 相当于执行了node a.js
    • 针对与某些命令可以省略run,比如start和test之类,直接执行npm start
  • npm cache命令用来管理npm的缓存

    • 每一次npm下载的依赖都会自动缓存,下次如果再次安装相同的依赖,npm会去缓存直接下载,而不会去网上下载
    • 默认缓存的地址一般是C:\Users\Administrator\AppData\Roaming\npm-cache
    • 当安装依赖时出现错误码是-4048需要清除缓存
      • npm cache clean
      • npm cache clean --force
  • npm config命令用来配置npm

    • 上面我们说到npm下载会缓存到C:\Users\Administrator\AppData\Roaming\npm-cache,如果我们不希望它往这个目录缓存,我们可以设置自定义它的缓存目录(但不建议修改)
      • npm config set cache 目录地址
    • 安装的依赖默认是从npm官网仓库下载,官网下载一般比较慢,我们可以手动配置npm的下载源
      • npm config set registry https://registry.npm.taobao.org

3. npm下载源

  • 所谓的下载源就是执行npm i 依赖名的时候下载依赖网站的地址
  • 默认下载会从npm官网,也就是http://registry.npmjs.org网站下载,这个网站在国外,下载速度比较慢
  • 一般我们会切换到国内的下载源,也称之国内的镜像源
    • 镜像源就是国内某些大厂会将npm官网的文件复制一份到自己的服务器,npm官网更新,这边资源也会自动更新,就像照镜子一样
  • 切换的命令我们可以使用上面的npm config set registry https://registry.npm.taobao.org,这样我们就切换到了淘宝的镜像服务器
  • 那么有哪些镜像源可以使用呢?我们要使用一个工具叫做nrm
  • 使用这个工具可以查看可用镜像源有哪些,还可以自由切换镜像源

4. nrm使用

  • nrm使用需要安装,我们在cmd命令行执行以下的代码
    • npm i nrm -g
    • 这个地方多了个-g我们待会解释,这是npm依赖安装的另一种方式
  • 安装成功之后,我们就可在cmd使用nrm命令,记住是nrm,不是npm
    • nrm test 检测可用下载源
  • 我们选择一个延迟比较短的切换过去,比如说淘宝
    • nrm use taobao
  • 切换之后我们再次执行nrm test就可以看到*就在淘宝上面了
  • 有时候我们既要使用原来的npm下载源还要使用淘宝的镜像源,我们可以单独安装一个命令cnpm
    • npm install -g cnpm --registry=https://registry.npm.taobao.org
    • 此后我们使用cnpm install 依赖名就是从淘宝源下载,使用npm install 依赖名就是原来的Npm官网下载

5. npm安装依赖的方式

  • 不同依赖的安装方式决定着我们不同的使用,npm安装依赖的方式主要有以下三种
    1. 全局安装依赖

      • 全局安装一般我们需要把安装的依赖当成一个工具来使用,在cmd命令行中使用,比如说nrm cnpm
      • 全局安装依赖方式
        • npm i 依赖 --global 或者简写 npm i 依赖 -g
        • 安装完成之后我们就可以在命令行使用这个依赖了
        • -g可以放在依赖名前面或者后面写 npm i 依赖 -gnpm i -g 依赖
      • 全局安装的依赖存储的默认位置在C:\Users\Administrator\AppData\Roaming\npm,可以手动设置全局安装的目录
        • npm config set prefix 目录路径
        • 不建议修改,修改之后可能导致安装无法使用
    2. 局部安装依赖

      • 当成开发和调试中的依赖一般我们要导入项目中使用,比如说我们后面会安装一个mysql,我们需要用require的方式导入代码使用,这种我们使用方式不一样,又分为以下两种
      • 局部的依赖安装之后都会在本地文件夹生成一个node_modulespackage-lock.json
      1. 当成开发和调试中依赖安装
        • 安装命令 npm i 依赖 --save-dev or npm i 依赖 -D
        • 这种方式的安装会记录到package.json的devDependencies
        • 打包上线的时候的时候不会将依赖打入到安装包
        • 比如安装的依赖有 gulp webpack这种工具类的只会在开发中用
      2. 当成生产中的依赖安装
        • 安装命令 npm i 依赖 --save or npm i 依赖 -S
          lp webpack`这种工具类的只会在开发中用
      3. 当成生产中的依赖安装
        • 安装命令 npm i 依赖 --save or npm i 依赖 -S
        • 这种方式的安装会记录到package.json的dependencies
相关推荐
牧羊人_myr9 分钟前
Ajax 技术详解
前端
浩男孩18 分钟前
🍀封装个 Button 组件,使用 vitest 来测试一下
前端
蓝银草同学23 分钟前
阿里 Iconfont 项目丢失?手把手教你将已引用的 SVG 图标下载到本地
前端·icon
布列瑟农的星空33 分钟前
重学React —— React事件机制 vs 浏览器事件机制
前端
程序定小飞1 小时前
基于springboot的在线商城系统设计与开发
java·数据库·vue.js·spring boot·后端
一小池勺1 小时前
CommonJS
前端·面试
孙牛牛1 小时前
实战分享:一招解决嵌套依赖版本失控问题,以 undici 为例
前端
用户52709648744901 小时前
Git 最佳实践
前端
星秀日1 小时前
JavaWeb--Ajax
前端·javascript·ajax