tgz自动下包工具 npm 自动下包工具,内网自动批量下载tgz格式压缩包;

npm 自动下包工具,内网自动批量下载tgz格式压缩包;

​ 在开发中有时会遇到比较保密的项目,因此不让使用外网,而当我们需要用到一些工具包时,就需要一个一个下载;

​ 这里是在近期的一次开发中遇到的问题,在开发中我使用了一些版本较高的依赖包,工程进行了一般一半,usb口因公司规定被封闭,然而我下载的包的版本比较高,于是就导致生产环境时无法使用jenkins自动打包;

​ 这里的解决方案就是首先统计出所有项目中依赖的包;

​ 因为拉取依赖的时候大部分版本都是向上兼容 所以下载最新的就可以(不带版本号)

并写成json文件,类似这样

[
    "bn.js",
    "browserslist",
    "caniuse-lite",
    "electron-to-chromium",
    "infer-owner",
    "fs-minipass",
    "minipass",
    "minipass-pipeline",
    "ssri",
    "cache-loader",
    "camel-case",
    "upper-case",
    "caniuse-lite",
    "cssnano-util-same-parent",
    "postcss-merge-longhand",
    "cssnano-preset-default",
    "css-loader",
    "cross-spawn",
    "semver",
    "core-js-compat",
    "copy-webpack-plugin",
    "@types/q",
    "wrap-ansi",
    "string-width",
    "mz"
    ]

那么有了这个json文件,我们就可以使用nodejs来对它进行批量操作

let fs = require('fs')
let path = require('path')
let shell = require("shelljs")

// 结果输出目录
let outputDir = 'output'

// 所有npm包名
let pack = require("./init_serve.json")
shell.cd(outputDir)
let errArr = []
pack.forEach((item, index) => {
  shell.exec(`npm pack ${item}`, function (err) {
    if (err) {
      errArr.push(item)
      fs.writeFileSync("AA-log.txt", JSON.stringify(errArr))
      if (index == pack.length - 1) {
        console.log('下载完成')
      }
    }
  })
})


代码整体并不复杂,只是利用shelljs来执行npm pack命令;

为了不丢错误输出,所以我在循环中加入的日志写入;

码云仓库地址:https://gitee.com/git_zs/output_tgz_npm.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值