NPM重学-基础知识

430 阅读4分钟

这是我参与更文挑战的第10天,活动详情查看: 更文挑战

1, NVM 是什么?

NVM 是 NODE.JS 的版本管理工具,通过它可以安装和切换不同版本的NODE, 从 GitHub 或者其他网站下载一个项目,我们首先查看的是当前这个项目所需要的 NODE 版本,NDOE.JS 官方版本更新的非常快,而且每一次更新改动都比较大,正是因为这个需求,才需要频繁的切换 NODE 版本

2, NVM 下载

1, Window版本

  https://github.com/coreybutler/nvm-windows/releases

2, MAC 版本

  https://github.com/nvm-sh/nvm#install--update-script

3, NVM, NODE, NPM 之间的区别

node 版本和npm包 兼容性越来越差,不同的node版本对应这不同的npm包版本。在使用node版本的过程中,版本之间的切换越来越重要。nvm是一个很好的node版本管理工具
1,node: node开发环境,代码库
2,npm:  安装node的时候,一起安装的,node的包管理器
3,nvm:  node的版本管理工具

4, 输入nvm 验证nvm是否安装成功

1,输入nvm
输出:Node Version Manager
代表安装成功
2,查看nvm版本
 nvm --verison

5, 常用的nvm命令

(0) nvm --version 查看nvm版本 (常用)
(1) nvm install stable   安装最新稳定版 node
(2) nvm install <version> ## 安装指定版本  For Example:  
    nvm install v10.12.0
(3) nvm ls-remote 查看远程所有的版本
     如果为 N/A,切换到外网,改变一下指向
     export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist
(4) nvm ls   查看已经下载安装的node版本
(5) nvm current   查看当前使用的node 版本
(6) nvm use v10.13.0  切换到10.13.0node版本
(7) nvm alias default 10.12.0 设置默认node版本

6, NPM包实战开发

- 1, 熟悉对UM账号和密码进行Base64编码,
  echo -n 'zhengliming511:2020@success' | openssl base64
    编码结果: emhlbmdsaW1pbmc1MTE6MjAyMEBzdWNjZXNz
- 创建 .npmrc文件,并填写
  init.author.name = zhengliming511
  init.author.email = zhengliming511@pingan.com.cn
  init.author.url = url
  email = zhengliming511@pingan.com.cn
  always-auth = true
  _auth = emhlbmdsaW1pbmc1MTE6MjAyMEBzdWNjZXNz
- 在package.json中新增
  "publishConfig": {
      "registry": "http://maven.paic.com.cn/repository/npm"
    }
- 最后一步: 执行 npm publish

7, NPM配置

1,NPM查询当前镜像

- npm config get registry

2,NPM设置镜像

  1,淘宝镜像
- npm config set registry http://registry.npm.taobao.org/
  2, 官方镜像
- npm config set registry http://registry.npmjs.org/
  3, 平安镜像
- npm config set fegistry http://maven.paic.com.cn/repository/npm

 3,Yarn 的安装和版本

- 下载node.js 使用npm安装
  npm install -g yarn
  yarn --version

 4,Yarn 查询当前镜像

- yarn config get registry

 5,Yarn 设置镜像

  1, 淘宝镜像
- yarn config set registry http://registry.npm.taobao.org/
  2, 官方镜像
- yarn config set registry http://registry.yarnpkg.com
  3, 安平镜像
- yarn config set registry http://maven.paic.com.cn/repository/npm

8, YARN 和 NPM 的区别

(1) yarn: 是同步执行所有任务,提高了性能, 而且如果你上一次安装过软件包,第二个会从缓存中获取, (2) npm: 是按照队列执行每一个package, 每一次都是从网络上下载,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装

  "6.0.3",  // 表示安装指定的6.0.3版本
  "~6.0.3", // 表示安装6.0.X中最新的版本
  "^6.0.3"  // 表示安装6.X.X中最新的版本

9, YARN 和 NPM 命令对比

 NPM                               Yarn
npm install                     ==     yarn
npm install vue -g              ==     yarn global add vue
npm install vue --save          ==     yarn add vue
npm install vue --save-dev      ==     yarn add vue --dev
npm uninstall vue --save(-dev)  ==     yarn remove vue
npm unpdate vue --save          ==     yarn upgrade vue

10, NPM 和 NPX 的区别

* npm 是 node 软件包的管理器
* npx 是 node 软件包的执行工具
  官方文档,从npm@5.2.0 版本开始,npx就和npm捆绑在了一起,可以认为npx是npm 的高级版本,npx 具有更强大的功能,
** npx是一个可执行的二进制文件,原理很简单,运行npx的时候,默认会到 node_modules/.bin 路径和环境变量$PATH里面,检查命令是否存在

For Example:
项目中想运行一个脚本命令有两种方式:
 1, package.json中配置script脚本
 {
   "scripts": {
     "mocha": xxxx
   }
 }
 2, 项目根目录路径下面:
  node-modules/.bin/mocha --version

现在有了npx可以直接执行:
npx mocka --version

*** 执行一次性命令
npx 当执行一个包的时候,会自动检查本地是否存在,如果没有会为你从 npm 上下载,临时安装这个包,并且执行它。当做完这些事情后,已安装的包不会出现在你的全局安装中,所以不用担心长期使用所带来的全局污染。
常用的命令: npx create-react-app my-app
安装一个临时create-react-app并调用,而不用污染全局安装

总结:执行npx命令
1.首先会检查本地项目路径中是否存在要执行的包
2.如果存在,执行;
3.如果不存在,意味着尚未安装该软件包,npx将临时安装其最新版本,然后执行它;

11, 展望未来

  • 因为 有了yarn的出现,npm5.0版本之后,npm也做了改进,引入了package-lock.json,速度和性能上也大大提升,个人感觉还没有超过yarn。
  • 如何选择,个人建议:大多数项目依然可以采取用npm,兼容性好,成熟,稳定,种类多,有趣,它和node一起提供,管理包安全放心,
  • 新的项目可以使用yarn,yarn是一个更安全的选择,随着时代的发展,我发现其实无关选择,都是为了工作需求,完成日常工作,选择哪一种看个人爱好。