diff --git a/package.json b/package.json index 1d40559088..a0727c8652 100644 --- a/package.json +++ b/package.json @@ -79,9 +79,8 @@ "lint-staged": "^9.5.0", "memfs": "^3.2.0", "minimist": "^1.2.5", + "node-fetch": "^2.6.1", "prettier": ">= 1.13.0", - "request": "^2.88.2", - "request-promise-native": "^1.0.8", "rimraf": "^3.0.2", "semver": "^7.3.2", "typescript": "~3.9.3", diff --git a/packages/@vue/cli-service/__tests__/proxy.spec.js b/packages/@vue/cli-service/__tests__/proxy.spec.js index 725fcef8e1..cbaff7f9df 100644 --- a/packages/@vue/cli-service/__tests__/proxy.spec.js +++ b/packages/@vue/cli-service/__tests__/proxy.spec.js @@ -1,6 +1,6 @@ jest.setTimeout(30000) -const request = require('request-promise-native') +const fetch = require('node-fetch') const { defaultPreset } = require('@vue/cli/lib/options') const create = require('@vue/cli-test-utils/createTestProject') const serve = require('@vue/cli-test-utils/serveWithPuppeteer') @@ -30,29 +30,22 @@ afterAll(() => { let newId = 1 async function assertProxy (url, title) { - const res = await request({ - url: `${url}posts/1`, - json: true - }) + const res = await fetch(`${url}posts/1`).then(result => result.json()) expect(res.title).toBe(title) // POST newId++ - await request({ - url: `${url}posts`, - json: true, + await fetch(`${url}posts`, { method: 'POST', - body: { + body: JSON.stringify({ id: newId, title: 'new', author: 'test' - } + }), + headers: { 'Content-Type': 'application/json' } }) - const newPost = await request({ - url: `${url}posts/${newId}`, - json: true - }) + const newPost = await fetch(`${url}posts/${newId}`).then(result => result.json()) expect(newPost.title).toBe('new') } diff --git a/packages/@vue/cli-shared-utils/lib/request.js b/packages/@vue/cli-shared-utils/lib/request.js index aeceb2d12b..aa74e0ea59 100644 --- a/packages/@vue/cli-shared-utils/lib/request.js +++ b/packages/@vue/cli-shared-utils/lib/request.js @@ -1,16 +1,13 @@ exports.request = { - get (uri, opts) { + get (url, opts) { // lazy require - const request = require('util').promisify(require('request')) + const fetch = require('node-fetch') const reqOpts = { method: 'GET', timeout: 30000, - resolveWithFullResponse: true, - json: true, - uri, ...opts } - return request(reqOpts) + return fetch(url, reqOpts).then(result => result.json()) } } diff --git a/packages/@vue/cli-shared-utils/package.json b/packages/@vue/cli-shared-utils/package.json index e991fce69f..58a5d5d562 100644 --- a/packages/@vue/cli-shared-utils/package.json +++ b/packages/@vue/cli-shared-utils/package.json @@ -25,11 +25,11 @@ "execa": "^1.0.0", "launch-editor": "^2.2.1", "lru-cache": "^6.0.0", + "node-fetch": "^2.6.1", "node-ipc": "^9.1.1", "open": "^7.2.1", "ora": "^5.1.0", "read-pkg": "^5.1.1", - "request": "^2.88.2", "semver": "^7.3.2", "strip-ansi": "^6.0.0" }, diff --git a/packages/@vue/cli/lib/util/ProjectPackageManager.js b/packages/@vue/cli/lib/util/ProjectPackageManager.js index 2531cf3457..ab506ad700 100644 --- a/packages/@vue/cli/lib/util/ProjectPackageManager.js +++ b/packages/@vue/cli/lib/util/ProjectPackageManager.js @@ -303,7 +303,7 @@ class PackageManager { const url = `${registry.replace(/\/$/g, '')}/${packageName}` try { - metadata = (await request.get(url, { headers })).body + metadata = (await request.get(url, { headers })) if (metadata.error) { throw new Error(metadata.error) } diff --git a/scripts/checkLinks.js b/scripts/checkLinks.js index 895c5b0741..b2efb019e1 100644 --- a/scripts/checkLinks.js +++ b/scripts/checkLinks.js @@ -1,21 +1,17 @@ require('events').defaultMaxListeners = 0 const path = require('path') const fs = require('fs') -const request = require('request-promise-native') +const fetch = require('node-fetch') const promises = [] async function checkLink (file, link, n) { try { - const result = await request({ - method: 'HEAD', - uri: link, - resolveWithFullResponse: true - }) - if (result.statusCode !== 200) { + const result = await fetch(link, { method: 'HEAD' }) + if (result.status !== 200) { throw new Error('error') } else { - console.log('[OK]', link, result.statusCode) + console.log('[OK]', link, result.status) } } catch (e) { console.warn('[!!]', link, `${file}:${parseInt(n) + 1}`) diff --git a/scripts/syncDeps.js b/scripts/syncDeps.js index 67a9e54a04..5843bfa204 100644 --- a/scripts/syncDeps.js +++ b/scripts/syncDeps.js @@ -5,7 +5,7 @@ const fs = require('fs') const path = require('path') const chalk = require('chalk') -const request = require('request-promise-native') +const fetch = require('node-fetch') const semver = require('semver') const globby = require('globby') const { execSync } = require('child_process') @@ -26,7 +26,7 @@ const getRemoteVersion = async (pkg) => { } let res try { - res = await request(`http://registry.npmjs.org/${pkg}/latest`, { json: true }) + res = await fetch(`http://registry.npmjs.org/${pkg}/latest`).then(result => result.json()) } catch (e) { return } diff --git a/yarn.lock b/yarn.lock index d6c4abc43b..aad2e06bc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3178,120 +3178,6 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-plugin-babel@file:packages/@vue/cli-plugin-babel": - version "4.5.8" - dependencies: - "@babel/core" "^7.11.6" - "@vue/babel-preset-app" "^4.5.8" - "@vue/cli-shared-utils" "^4.5.8" - babel-loader "^8.1.0" - cache-loader "^4.1.0" - thread-loader "^3.0.0" - webpack "^4.0.0" - -"@vue/cli-plugin-eslint@file:packages/@vue/cli-plugin-eslint": - version "4.5.8" - dependencies: - "@vue/cli-shared-utils" "^4.5.8" - eslint-loader "^4.0.2" - globby "^9.2.0" - inquirer "^7.1.0" - webpack "^4.0.0" - yorkie "^2.0.0" - -"@vue/cli-plugin-typescript@file:packages/@vue/cli-plugin-typescript": - version "4.5.8" - dependencies: - "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.8" - cache-loader "^4.1.0" - fork-ts-checker-webpack-plugin "^5.0.11" - globby "^9.2.0" - thread-loader "^3.0.0" - ts-loader "^8.0.5" - webpack "^4.0.0" - yorkie "^2.0.0" - -"@vue/cli-plugin-unit-jest@file:packages/@vue/cli-plugin-unit-jest": - version "4.5.8" - dependencies: - "@babel/core" "^7.11.6" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@types/jest" "^24.0.19" - "@vue/cli-shared-utils" "^4.5.8" - babel-core "^7.0.0-bridge.0" - babel-jest "^24.9.0" - babel-plugin-transform-es2015-modules-commonjs "^6.26.2" - deepmerge "^4.2.2" - jest "^24.9.0" - jest-environment-jsdom-fifteen "^1.0.2" - jest-serializer-vue "^2.0.2" - jest-transform-stub "^2.0.0" - jest-watch-typeahead "^0.4.2" - ts-jest "^24.2.0" - vue-jest "^3.0.5" - -"@vue/cli-service@file:packages/@vue/cli-service": - version "4.5.8" - dependencies: - "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@soda/friendly-errors-webpack-plugin" "^1.7.1" - "@soda/get-current-script" "^1.0.0" - "@types/minimist" "^1.2.0" - "@types/webpack" "^4.0.0" - "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.8" - "@vue/cli-plugin-router" "^4.5.8" - "@vue/cli-plugin-vuex" "^4.5.8" - "@vue/cli-shared-utils" "^4.5.8" - "@vue/component-compiler-utils" "^3.1.2" - "@vue/preload-webpack-plugin" "^1.1.0" - "@vue/web-component-wrapper" "^1.2.0" - acorn "^8.0.1" - acorn-walk "^8.0.0" - address "^1.1.2" - autoprefixer "^9.8.6" - browserslist "^4.14.1" - cache-loader "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.4" - clipboardy "^2.3.0" - cliui "^6.0.0" - copy-webpack-plugin "^6.2.1" - css-loader "^3.5.3" - cssnano "^4.1.10" - debug "^4.1.1" - default-gateway "^6.0.2" - dotenv "^8.2.0" - dotenv-expand "^5.1.0" - file-loader "^6.1.1" - fs-extra "^7.0.1" - globby "^9.2.0" - hash-sum "^2.0.0" - html-webpack-plugin "^3.2.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.9.0" - minimist "^1.2.5" - pnp-webpack-plugin "^1.6.4" - portfinder "^1.0.26" - postcss-loader "^3.0.0" - ssri "^8.0.0" - terser-webpack-plugin "^4.2.3" - thread-loader "^3.0.0" - url-loader "^4.1.1" - vue-loader "^15.9.2" - vue-style-loader "^4.1.2" - webpack "^4.0.0" - webpack-bundle-analyzer "^3.8.0" - webpack-chain "^6.4.0" - webpack-dev-server "^3.11.0" - webpack-merge "^4.2.2" - optionalDependencies: - vue-loader-v16 "npm:vue-loader@^16.0.0-beta.7" - "@vue/compiler-core@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.1.tgz#3ce57531078c6220be7ea458e41e4bab3522015b" @@ -3424,7 +3310,7 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.1.tgz#48196c056726aa7466d0182698524c84f203006b" integrity sha512-/X6AUbTFCyD2BcJnBoacUct8qcv1A5uk1+N+3tbzDVuhGPRmoYrTSnNUuF53C/GIsTkChrEiXaJh2kyo/0tRvw== -"@vue/test-utils@^1.0.3", "@vue/test-utils@^1.0.5", "@vue/test-utils@^1.1.0": +"@vue/test-utils@^1.0.5", "@vue/test-utils@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.0.tgz#76305e73a786c921ede1352849614e26c7113f94" integrity sha512-M+3jtVqNYIrvzO5gaxogre5a5+96h0hN/dXw+5Lj0t+dp6fAhYcUjpLrC9j9cEEkl2Rcuh/gKYRUmR5N4vcqPw== @@ -16315,7 +16201,7 @@ puppeteer-core@^5.1.0: unbzip2-stream "^1.3.3" ws "^7.2.3" -puppeteer@1.11.0, puppeteer@^1.11.0: +puppeteer@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770" integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ== @@ -19797,7 +19683,7 @@ vue-router@^3.4.3, vue-router@^3.4.5: resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.7.tgz#bf189bafd16f4e4ef783c4a6250a3090f2c1fa1b" integrity sha512-CbHXue5BLrDivOk5O4eZ0WT4Yj8XwdXa4kCnsEIOzYUPF/07ZukayA2jGxDCJxLc9SgVQX9QX0OuGOwGlVB4Qg== -vue-server-renderer@^2.6.10, vue-server-renderer@^2.6.12: +vue-server-renderer@^2.6.10: version "2.6.12" resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.12.tgz#a8cb9c49439ef205293cb41c35d0d2b0541653a5" integrity sha512-3LODaOsnQx7iMFTBLjki8xSyOxhCtbZ+nQie0wWY4iOVeEtTg1a3YQAjd82WvKxrWHHTshjvLb7OXMc2/dYuxw== @@ -19819,7 +19705,7 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.11, vue-template-compiler@^2.6.12: +vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.12: version "2.6.12" resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== @@ -19848,7 +19734,7 @@ vue-virtual-scroller@^1.0.10: vue-observe-visibility "^0.4.4" vue-resize "^0.4.5" -vue@^2.6.10, vue@^2.6.11, vue@^2.6.12: +vue@^2.6.10, vue@^2.6.12: version "2.6.12" resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==