关于NPM post install的下载速度提升

623 阅读1分钟

关于NPM post install的下载速度提升

最近在使用prisma gnerate client代码的时候突然发现网络错误无法下载binary文件

我记得我第一次开发electron的时候被electron postintall搞的头都大了,真的太慢了。

那时候刚刚做前端的时候,随着后面越来越多的库都有依赖post install下载binary

直到某一天我发现了Anthony Fu一篇踩坑记录NPM Binary 镜像配置,我才幡然醒悟,为什么npm,docker都有镜像,为什么这个binary没有镜像呢?

所有的主流post install都可以像如下配置在你的.bashrc类似的shell暴露环境变量

比如要配置的prima generate client的时候

可以像这样

PRISMA_ENGINES_MIRROR=https://cdn.npmmirror.com/binaries/prisma

也有electron可以有这种特殊配置在.npmrc

electron_mirror=https://npmmirror.com/mirrors/electron/

当然还有更多的binary镜像,你可以在github.com/cnpm/binary… 找到更多的镜像配置

"ENVS": {
        "COREPACK_NPM_REGISTRY": "https://registry.npmmirror.com",
        "NODEJS_ORG_MIRROR": "https://cdn.npmmirror.com/binaries/node",
        "NVM_NODEJS_ORG_MIRROR": "https://cdn.npmmirror.com/binaries/node",
        "PHANTOMJS_CDNURL": "https://cdn.npmmirror.com/binaries/phantomjs",
        "CHROMEDRIVER_CDNURL": "https://cdn.npmmirror.com/binaries/chromedriver",
        "OPERADRIVER_CDNURL": "https://cdn.npmmirror.com/binaries/operadriver",
        "CYPRESS_DOWNLOAD_PATH_TEMPLATE": "https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip",
        "ELECTRON_MIRROR": "https://cdn.npmmirror.com/binaries/electron/",
        "ELECTRON_BUILDER_BINARIES_MIRROR": "https://cdn.npmmirror.com/binaries/electron-builder-binaries/",
        "SASS_BINARY_SITE": "https://cdn.npmmirror.com/binaries/node-sass",
        "SWC_BINARY_SITE": "https://cdn.npmmirror.com/binaries/node-swc",
        "NWJS_URLBASE": "https://cdn.npmmirror.com/binaries/nwjs/v",
        "PUPPETEER_DOWNLOAD_HOST": "https://cdn.npmmirror.com/binaries/chrome-for-testing",
        "PUPPETEER_DOWNLOAD_BASE_URL": "https://cdn.npmmirror.com/binaries/chrome-for-testing",
        "PLAYWRIGHT_DOWNLOAD_HOST": "https://cdn.npmmirror.com/binaries/playwright",
        "SENTRYCLI_CDNURL": "https://cdn.npmmirror.com/binaries/sentry-cli",
        "SAUCECTL_INSTALL_BINARY_MIRROR": "https://cdn.npmmirror.com/binaries/saucectl",
        "RE2_DOWNLOAD_MIRROR": "https://cdn.npmmirror.com/binaries/node-re2",
        "RE2_DOWNLOAD_SKIP_PATH": "true",
        "PRISMA_ENGINES_MIRROR": "https://cdn.npmmirror.com/binaries/prisma",
        "npm_config_better_sqlite3_binary_host": "https://cdn.npmmirror.com/binaries/better-sqlite3",
        "npm_config_keytar_binary_host": "https://cdn.npmmirror.com/binaries/keytar",
        "npm_config_sharp_binary_host": "https://cdn.npmmirror.com/binaries/sharp",
        "npm_config_sharp_libvips_binary_host": "https://cdn.npmmirror.com/binaries/sharp-libvips",
        "npm_config_robotjs_binary_host": "https://cdn.npmmirror.com/binaries/robotjs"
      },