zoukankan      html  css  js  c++  java
  • react 构建项目过程中cnpm 和 npm的区别 可以避免报错 “antd-todolist@0.1.0 start: `react-app-rewired start”

    于是就有了 cnpm,这是淘宝团队做的淘宝 NPM 镜像。你可以放心地用 cnpm来代替 npm,因为它同步频率为 10 分钟一次常,以保证尽量与官方服务同步。

    方案一(不推荐):

    使用 cnpm 命令替代 npm,安装非常地简单。

    1. 安装 cnpm
    $ npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    1. 测试是否成功安装
    $ cnpm -v
    
    1. 安装模块
    $ cnpm install [name]
    

    就这样,没了。

    方案二(推荐):

    尽管有了 npm 的替代方案,但是我们在一些命令时,比如 create-react-app 等,它们默认是使用 npm 命令,于是就有了方案二。

    使用 npm config get registry 命令,我们可以知道 npm 的源地址是 https://registry.npmjs.org

    $ npm config get registry
    

    这个方案就是修改 registry,让其指定 淘宝 npm 镜像 的地址,如下:

    $ npm config set registry https://registry.npm.taobao.org
    

    使用如下命令,我们可以知道是否修改成功了。

    $ npm config get registry
    # 或者使用
    $ npm info express
    

    或者直接修改 ~/.npmrc 来实现。

    $ open ~/.npmrc
    
    # 然后添加一行配置(去掉 # 号),然后保存就可以了
    # registry=https://registry.npm.taobao.org/
    

    然后你再使用npmcreate-react-app 等命令,就会发现有多快了,哈哈。

    方案三(不推荐):

    太麻烦了,每次得加上 registry 源地址。

    npm install --registry=https://registry.npm.taobao.org [name]
    

    为什么推荐方案二呢?

    首先,使用 npm 作为前端项目包管理工具的话,使用 npmcnpm 来安装包时有区别的。

    相信你们看到很多前端工程项目都存在一个 package-lock.json 的文件。就是跟它有关系。(关于 package-lock.json 的作用可以看这篇文章。)

    • cnpm i不受 package-lock.json 影响,只会根据 package.json 进行下载安装。
    • cnpm i xxx@xxx不会跟新到 package-lock.json 中去。
    • npm i xxx@xxx 会跟新到 package-lock.json 中去。

    在多人共同协作维护的项目中,package-lock.json 是必不可少的,是为了确保不同开发者安装的包及其依赖保持一致,同时也是降低不同版本 npm 包给项目稳定性带来的影响。(尤其是一些不遵循语义化版本控制的第三方 npm 包,就很容易被坑到。)



  • 相关阅读:
    程序员都遇到过哪些误解?
    云原生系列5 容器化日志之EFK
    云原生系列4 批量定时更新本地代码库
    云原生系列3 pod核心字段
    云原生系列2 部署你的第一个k8s应用
    云原生系列1 pod基础
    项目总结二:使用分布式存储读写分离功能应要注意的问题
    项目总结一:HttpClient DelegatingHandler管道扩展 生命周期问题
    Java 反编译工具的使用与对比分析
    如何使用 Github Actions 自动抓取每日必应壁纸?
  • 原文地址:https://www.cnblogs.com/zan0627/p/14200762.html
Copyright © 2011-2022 走看看