vue-cli ui 里的依赖最新版本列表怎么来的?

首先看下vue-cli的依赖列表:

 

 这些最新的依赖猜测是通过npm命令行,或者npm的一个地址获取到的

  通过npm命令行的方式如下:

const spawn = require('cross-spawn');
var result = spawn.sync('npm', ['view', 'react', 'version']);
console.log("result: " + result.output[1].toString( 'utf-8', 0, result.output[1].length ));

  通过npm的一个地址请求获取的如下:

index.js

const rp = require('request-promise');
const plugins = require('./plugin');
let start = +new Date();
console.log(plugins.length);
const getLatestVersion = async() => {
    let latestArr = [];
    for(var i = 0; i < 10; i++) {
        var url = 'https://registry.npmjs.org//' + plugins[i];
        result = await rp(url);
        if(result) {
            let obj = JSON.parse(result) || {};
            let lastVersion = JSON.parse(result)['dist-tags']['latest']
            latestArr.push(result);
        }
    }
    return latestArr
}

getLatestVersion().then(data => {
    let end = +new Date();
    console.log('处理结果是:' + data);
    console.log('处理这些请求一共花了:' + (end - start) / 1000 + '秒');
})

 plungin.js

var plugin = [
    "@babel/plugin-syntax-dynamic-import",
    "@babel/polyfill",
    "@babel/runtime",
    "file-loader",
    "html-loader",
    "html-webpack-plugin",
    "imports-loader",
    "json-loader",
    "less",
    "less-loader",
    "sass-loader",
    "style-loader",
    "stylus",
    "stylus-loader",
    "url-loader",
    "webpack",
    "webpack-bundle-analyzer",
    "webpack-dev-middleware",
    "webpack-dev-server",
    "webpack-hot-middleware",
    "webpack-merge"]
    module.exports = plugin;

  最终也能得到一个最新版本列表

但是会发现速度很慢

看下vue-cli里怎么做的吧

在/usr/local/share/.config/yarn/global/node_modules/@vue/cli-ui/apollo-server/connectors/dependencies.js里

 

 

 

 在/usr/local/share/.config/yarn/global/node_modules/@vue/cli/lib/util/ProjectPackageManager.js里

 

 

而且还使用LCU做网络缓存

 

posted on 2020-07-01 10:40  杨龙飞  阅读(1629)  评论(2编辑  收藏  举报

导航

Fork me on GitHub