zoukankan      html  css  js  c++  java
  • 关于 npm 包管理器最常用的内容都在这儿了

    Nodejs的诞生,给前端开发世界带来了翻天覆地的变化。
    前端工程化,各种工具,以及向后端的能力扩展。

    车子离不开轮子,node(前后端)开发离不开npm这个包管理工具,在这总结下常用配套工具:


    npm

    安装Nodejs会自带 npm,这个默认的包管理器。

    常用的基本命令有

    • 初始化,建立工程(主要体现在生成一个package.json的文件)
    npm init
    
    • 安装包
      如果是clone一个已有工程,下到本地第一步自然是安装所有的依赖包了。

      npm install
      // 简写:
      npm i
      

      如果要全局安装一个包,

      npm install -global <packagename>
      // 或简写
      npm i -g <packagename>
      

      如果是局部安装,只在本项目工程内使用,有开发依赖生产依赖之分

      • 生产依赖(安装完会被添加到package.json文件的dependencies
      npm install --save <packagename>
      // 或简写:
      npm i -S <packagename>
      
      • 开发依赖(安装完会被添加到package.json文件的devDependencies
      npm install --save-dev <packagename>
      // 或简写:
      npm i -D <packagename>
      
    • 执行命令
      除了初始化和安装包,最常用的要数npm run <commandname>了。
      即执行命令任务。

      都可以执行什么呢?
      可执行的命令任务都配置在了package.json文件的scripts下。
      初始化完成后往往都是有一个默认的test命令。
      类似的,我们可以在这里添加自己的任务内容。

      比如:

      "scripts": {
        "start": "webpack-dev-server --open",
        "lint": "eslint --ext .js,.vue src",
        "build": "node build/build.js",
      },
    

    以上配置中,键值对中的键名自己随便起,后面的值,就根据你装的对应的包来了,
    webpack-dev-server就是方便前端开发用的模拟接口用的服务器,
    eslint是语法检查排错的工具。
    在后面的就是传的参数了。

    特别的一点是,npm start是默认就有的一个命令,
    其实就是它可以省略run而已,
    执行的还是npm run start

    • 补充:
      国内访问国外的npm服务器来安装的话,网速缓慢,经常会出现安装失败的情况。
      往往都是用淘宝 NPM 镜像cnpm来安装。

      • 首先全局安装cnpm
      npm install -g cnpm --registry=https://registry.npm.taobao.org
      
      • 这样就可以使用cnpm来安装各种依赖包了
        只是把npm换成cnpm而已,其它install用法完全一样。
      cnpm install <packagename>
      

      这样,包安装就快多了,基本不可能安装失败。
      另外,不能一个包用npm装,一个包就cnpm装,反正我试的时候要删掉node_modules文件夹重新用同一源安装。


    nrm

    上面说到了cnpm,改用访问淘宝NPM镜像,这是一种方式。

    还有很多另外的源,nrm是统一管理的工具,可以一键切换npm包安装源。

    • 全局安装nrm
    npm install -g nrm
    
    • 查看源

      nrm ls
      

      显示源列表:

      * npm ---- https://registry.npmjs.org/
        cnpm --- http://r.cnpmjs.org/
        taobao - https://registry.npm.taobao.org/
        nj ----- https://registry.nodejitsu.com/
        npmMirror  https://skimdb.npmjs.com/registry/
        edunpm - http://registry.enpmjs.org/
      

      带星号*的就是当前使用的源,也可以用一下命令查看:

      nrm current
      
      // => 显示 npm
      
    • 切换源

      nrm use <originname>
      

      如:

      nrm use cnpm
      
      // 显示:
      Registry has been set to: http://r.cnpmjs.org/
      
      nrm current
      
      // 显示:
      cnpm
      

    注意:
    这里的cnpm与上面提到的cnpm不是一回事儿。

    这里的cnpm只是给npm切换源,上面的cnpm是单独一个安装工具,除了没有npm publish,其它都跟npm一样。


    nvm

    安装了node,就是此时最新的版本。
    如果要参与的是已有老项目,可能会版本不匹配,环境有问题,
    这时候要重新安装一个旧版本的吗?
    再做新项目的时候又再卸载重新安装新版本吗?

    那样多麻烦。当然有简便的办法了,那就是nvm,node多版本管理工具。

    nvm ls
    
    // 显示:
      * 10.15.3 (Currently using 64-bit executable)
        8.15.1
    

    即当前使用版本为10.15.3,本机安装了两个版本的node了,另一个是8.15.1
    可以通过nvm use [version]来切换版本

    • 切换版本
    nvm use 8.15.1
    
    // 显示:
    Now using node v8.15.1 (64-bit)
    

    很显然,安装的有点旧了,最新的LTS版本都到12.13.0了,
    怎么安装最新版呢?

    • 添加新的node版本
      查看已发布的可用版本:
    nvm ls avilable
    
    // 显示:
    
    |   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
    |--------------|--------------|--------------|--------------|
    |    13.0.1    |   12.13.0    |   0.12.18    |   0.11.16    |
    |    13.0.0    |   10.17.0    |   0.12.17    |   0.11.15    |
    |   12.12.0    |   10.16.3    |   0.12.16    |   0.11.14    |
    |   12.11.1    |   10.16.2    |   0.12.15    |   0.11.13    |
    |   12.11.0    |   10.16.1    |   0.12.14    |   0.11.12    |
    |   12.10.0    |   10.16.0    |   0.12.13    |   0.11.11    |
    |    12.9.1    |   10.15.3    |   0.12.12    |   0.11.10    |
    |    12.9.0    |   10.15.2    |   0.12.11    |    0.11.9    |
    |    12.8.1    |   10.15.1    |   0.12.10    |    0.11.8    |
    |    12.8.0    |   10.15.0    |    0.12.9    |    0.11.7    |
    |    12.7.0    |   10.14.2    |    0.12.8    |    0.11.6    |
    |    12.6.0    |   10.14.1    |    0.12.7    |    0.11.5    |
    |    12.5.0    |   10.14.0    |    0.12.6    |    0.11.4    |
    |    12.4.0    |   10.13.0    |    0.12.5    |    0.11.3    |
    |    12.3.1    |    8.16.2    |    0.12.4    |    0.11.2    |
    |    12.3.0    |    8.16.1    |    0.12.3    |    0.11.1    |
    |    12.2.0    |    8.16.0    |    0.12.2    |    0.11.0    |
    |    12.1.0    |    8.15.1    |    0.12.1    |    0.9.12    |
    |    12.0.0    |    8.15.0    |    0.12.0    |    0.9.11    |
    |   11.15.0    |    8.14.1    |   0.10.48    |    0.9.10    |
    
    This is a partial list. For a complete list, visit 
    https://nodejs.org/download/release
    

    我们来安装一下12.13.0

    nvm install 12.13.0    
    

    显示:

    Downloading node.js version 12.13.0 (64-bit)...
    Complete
    Creating C:
    vm	emp
    
    Downloading npm version 6.12.0... Complete
    Installing npm v6.12.0...
    
    Installation complete. If you want to use this version, type
    
    nvm use 12.13.0
    

    告诉我们安装完成,如果要使用这个版本的话就敲入这个命令(nvm use 12.13.0)。
    你会发现,安装最新node的时候,npm也是配套更新的。


    其实还有一个:npx

    它的主要特点是,可以让我们直接使用一些包的命令,
    不用关心有没有已经安装,因为它检查到没有就会先来安装。

    还可以配参数来指定强制安装最新还是使用本地已有。

    另外就是临时安装,用完即删,下次npx的时候还会安装。

    它还提供类似nvm的功能,供临时切换node版本。

    这个我倒是没怎么使用。

    npm相对的还有一个yarn,在下一篇里再做介绍和总结吧。

    作者:码路工人

    公众号:码路工人有力量(Code-Power)

    欢迎关注个人微信公众号 Coder-Power

    一起学习提高吧~

  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/all-about-npm-and-nrm-nvm-npx.html
Copyright © 2011-2022 走看看