Skip to content

Commit ba6cb7c

Browse files
authored
refactor!: replace request with node-fetch (#6009)
1 parent 68be2ec commit ba6cb7c

File tree

8 files changed

+24
-153
lines changed

8 files changed

+24
-153
lines changed

package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@
7979
"lint-staged": "^9.5.0",
8080
"memfs": "^3.2.0",
8181
"minimist": "^1.2.5",
82+
"node-fetch": "^2.6.1",
8283
"prettier": ">= 1.13.0",
83-
"request": "^2.88.2",
84-
"request-promise-native": "^1.0.8",
8584
"rimraf": "^3.0.2",
8685
"semver": "^7.3.2",
8786
"typescript": "~3.9.3",

packages/@vue/cli-service/__tests__/proxy.spec.js

+7-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
jest.setTimeout(30000)
22

3-
const request = require('request-promise-native')
3+
const fetch = require('node-fetch')
44
const { defaultPreset } = require('@vue/cli/lib/options')
55
const create = require('@vue/cli-test-utils/createTestProject')
66
const serve = require('@vue/cli-test-utils/serveWithPuppeteer')
@@ -30,29 +30,22 @@ afterAll(() => {
3030

3131
let newId = 1
3232
async function assertProxy (url, title) {
33-
const res = await request({
34-
url: `${url}posts/1`,
35-
json: true
36-
})
33+
const res = await fetch(`${url}posts/1`).then(result => result.json())
3734
expect(res.title).toBe(title)
3835

3936
// POST
4037
newId++
41-
await request({
42-
url: `${url}posts`,
43-
json: true,
38+
await fetch(`${url}posts`, {
4439
method: 'POST',
45-
body: {
40+
body: JSON.stringify({
4641
id: newId,
4742
title: 'new',
4843
author: 'test'
49-
}
44+
}),
45+
headers: { 'Content-Type': 'application/json' }
5046
})
5147

52-
const newPost = await request({
53-
url: `${url}posts/${newId}`,
54-
json: true
55-
})
48+
const newPost = await fetch(`${url}posts/${newId}`).then(result => result.json())
5649
expect(newPost.title).toBe('new')
5750
}
5851

Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
exports.request = {
2-
get (uri, opts) {
2+
get (url, opts) {
33
// lazy require
4-
const request = require('util').promisify(require('request'))
4+
const fetch = require('node-fetch')
55
const reqOpts = {
66
method: 'GET',
77
timeout: 30000,
8-
resolveWithFullResponse: true,
9-
json: true,
10-
uri,
118
...opts
129
}
1310

14-
return request(reqOpts)
11+
return fetch(url, reqOpts).then(result => result.json())
1512
}
1613
}

packages/@vue/cli-shared-utils/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@
2525
"execa": "^1.0.0",
2626
"launch-editor": "^2.2.1",
2727
"lru-cache": "^6.0.0",
28+
"node-fetch": "^2.6.1",
2829
"node-ipc": "^9.1.1",
2930
"open": "^7.2.1",
3031
"ora": "^5.1.0",
3132
"read-pkg": "^5.1.1",
32-
"request": "^2.88.2",
3333
"semver": "^7.3.2",
3434
"strip-ansi": "^6.0.0"
3535
},

packages/@vue/cli/lib/util/ProjectPackageManager.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ class PackageManager {
303303

304304
const url = `${registry.replace(/\/$/g, '')}/${packageName}`
305305
try {
306-
metadata = (await request.get(url, { headers })).body
306+
metadata = (await request.get(url, { headers }))
307307
if (metadata.error) {
308308
throw new Error(metadata.error)
309309
}

scripts/checkLinks.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
require('events').defaultMaxListeners = 0
22
const path = require('path')
33
const fs = require('fs')
4-
const request = require('request-promise-native')
4+
const fetch = require('node-fetch')
55

66
const promises = []
77

88
async function checkLink (file, link, n) {
99
try {
10-
const result = await request({
11-
method: 'HEAD',
12-
uri: link,
13-
resolveWithFullResponse: true
14-
})
15-
if (result.statusCode !== 200) {
10+
const result = await fetch(link, { method: 'HEAD' })
11+
if (result.status !== 200) {
1612
throw new Error('error')
1713
} else {
18-
console.log('[OK]', link, result.statusCode)
14+
console.log('[OK]', link, result.status)
1915
}
2016
} catch (e) {
2117
console.warn('[!!]', link, `${file}:${parseInt(n) + 1}`)

scripts/syncDeps.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
const fs = require('fs')
66
const path = require('path')
77
const chalk = require('chalk')
8-
const request = require('request-promise-native')
8+
const fetch = require('node-fetch')
99
const semver = require('semver')
1010
const globby = require('globby')
1111
const { execSync } = require('child_process')
@@ -26,7 +26,7 @@ const getRemoteVersion = async (pkg) => {
2626
}
2727
let res
2828
try {
29-
res = await request(`http://registry.npmjs.org/${pkg}/latest`, { json: true })
29+
res = await fetch(`http://registry.npmjs.org/${pkg}/latest`).then(result => result.json())
3030
} catch (e) {
3131
return
3232
}

yarn.lock

+5-119
Original file line numberDiff line numberDiff line change
@@ -3178,120 +3178,6 @@
31783178
"@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
31793179
camelcase "^5.0.0"
31803180

3181-
"@vue/cli-plugin-babel@file:packages/@vue/cli-plugin-babel":
3182-
version "4.5.8"
3183-
dependencies:
3184-
"@babel/core" "^7.11.6"
3185-
"@vue/babel-preset-app" "^4.5.8"
3186-
"@vue/cli-shared-utils" "^4.5.8"
3187-
babel-loader "^8.1.0"
3188-
cache-loader "^4.1.0"
3189-
thread-loader "^3.0.0"
3190-
webpack "^4.0.0"
3191-
3192-
"@vue/cli-plugin-eslint@file:packages/@vue/cli-plugin-eslint":
3193-
version "4.5.8"
3194-
dependencies:
3195-
"@vue/cli-shared-utils" "^4.5.8"
3196-
eslint-loader "^4.0.2"
3197-
globby "^9.2.0"
3198-
inquirer "^7.1.0"
3199-
webpack "^4.0.0"
3200-
yorkie "^2.0.0"
3201-
3202-
"@vue/cli-plugin-typescript@file:packages/@vue/cli-plugin-typescript":
3203-
version "4.5.8"
3204-
dependencies:
3205-
"@types/webpack-env" "^1.15.2"
3206-
"@vue/cli-shared-utils" "^4.5.8"
3207-
cache-loader "^4.1.0"
3208-
fork-ts-checker-webpack-plugin "^5.0.11"
3209-
globby "^9.2.0"
3210-
thread-loader "^3.0.0"
3211-
ts-loader "^8.0.5"
3212-
webpack "^4.0.0"
3213-
yorkie "^2.0.0"
3214-
3215-
"@vue/cli-plugin-unit-jest@file:packages/@vue/cli-plugin-unit-jest":
3216-
version "4.5.8"
3217-
dependencies:
3218-
"@babel/core" "^7.11.6"
3219-
"@babel/plugin-transform-modules-commonjs" "^7.9.6"
3220-
"@types/jest" "^24.0.19"
3221-
"@vue/cli-shared-utils" "^4.5.8"
3222-
babel-core "^7.0.0-bridge.0"
3223-
babel-jest "^24.9.0"
3224-
babel-plugin-transform-es2015-modules-commonjs "^6.26.2"
3225-
deepmerge "^4.2.2"
3226-
jest "^24.9.0"
3227-
jest-environment-jsdom-fifteen "^1.0.2"
3228-
jest-serializer-vue "^2.0.2"
3229-
jest-transform-stub "^2.0.0"
3230-
jest-watch-typeahead "^0.4.2"
3231-
ts-jest "^24.2.0"
3232-
vue-jest "^3.0.5"
3233-
3234-
"@vue/cli-service@file:packages/@vue/cli-service":
3235-
version "4.5.8"
3236-
dependencies:
3237-
"@intervolga/optimize-cssnano-plugin" "^1.0.5"
3238-
"@soda/friendly-errors-webpack-plugin" "^1.7.1"
3239-
"@soda/get-current-script" "^1.0.0"
3240-
"@types/minimist" "^1.2.0"
3241-
"@types/webpack" "^4.0.0"
3242-
"@types/webpack-dev-server" "^3.11.0"
3243-
"@vue/cli-overlay" "^4.5.8"
3244-
"@vue/cli-plugin-router" "^4.5.8"
3245-
"@vue/cli-plugin-vuex" "^4.5.8"
3246-
"@vue/cli-shared-utils" "^4.5.8"
3247-
"@vue/component-compiler-utils" "^3.1.2"
3248-
"@vue/preload-webpack-plugin" "^1.1.0"
3249-
"@vue/web-component-wrapper" "^1.2.0"
3250-
acorn "^8.0.1"
3251-
acorn-walk "^8.0.0"
3252-
address "^1.1.2"
3253-
autoprefixer "^9.8.6"
3254-
browserslist "^4.14.1"
3255-
cache-loader "^4.1.0"
3256-
case-sensitive-paths-webpack-plugin "^2.3.0"
3257-
cli-highlight "^2.1.4"
3258-
clipboardy "^2.3.0"
3259-
cliui "^6.0.0"
3260-
copy-webpack-plugin "^6.2.1"
3261-
css-loader "^3.5.3"
3262-
cssnano "^4.1.10"
3263-
debug "^4.1.1"
3264-
default-gateway "^6.0.2"
3265-
dotenv "^8.2.0"
3266-
dotenv-expand "^5.1.0"
3267-
file-loader "^6.1.1"
3268-
fs-extra "^7.0.1"
3269-
globby "^9.2.0"
3270-
hash-sum "^2.0.0"
3271-
html-webpack-plugin "^3.2.0"
3272-
launch-editor-middleware "^2.2.1"
3273-
lodash.defaultsdeep "^4.6.1"
3274-
lodash.mapvalues "^4.6.0"
3275-
lodash.transform "^4.6.0"
3276-
mini-css-extract-plugin "^0.9.0"
3277-
minimist "^1.2.5"
3278-
pnp-webpack-plugin "^1.6.4"
3279-
portfinder "^1.0.26"
3280-
postcss-loader "^3.0.0"
3281-
ssri "^8.0.0"
3282-
terser-webpack-plugin "^4.2.3"
3283-
thread-loader "^3.0.0"
3284-
url-loader "^4.1.1"
3285-
vue-loader "^15.9.2"
3286-
vue-style-loader "^4.1.2"
3287-
webpack "^4.0.0"
3288-
webpack-bundle-analyzer "^3.8.0"
3289-
webpack-chain "^6.4.0"
3290-
webpack-dev-server "^3.11.0"
3291-
webpack-merge "^4.2.2"
3292-
optionalDependencies:
3293-
vue-loader-v16 "npm:vue-loader@^16.0.0-beta.7"
3294-
32953181
32963182
version "3.0.1"
32973183
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.1.tgz#3ce57531078c6220be7ea458e41e4bab3522015b"
@@ -3424,7 +3310,7 @@
34243310
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.1.tgz#48196c056726aa7466d0182698524c84f203006b"
34253311
integrity sha512-/X6AUbTFCyD2BcJnBoacUct8qcv1A5uk1+N+3tbzDVuhGPRmoYrTSnNUuF53C/GIsTkChrEiXaJh2kyo/0tRvw==
34263312

3427-
"@vue/test-utils@^1.0.3", "@vue/test-utils@^1.0.5", "@vue/test-utils@^1.1.0":
3313+
"@vue/test-utils@^1.0.5", "@vue/test-utils@^1.1.0":
34283314
version "1.1.0"
34293315
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.1.0.tgz#76305e73a786c921ede1352849614e26c7113f94"
34303316
integrity sha512-M+3jtVqNYIrvzO5gaxogre5a5+96h0hN/dXw+5Lj0t+dp6fAhYcUjpLrC9j9cEEkl2Rcuh/gKYRUmR5N4vcqPw==
@@ -16315,7 +16201,7 @@ puppeteer-core@^5.1.0:
1631516201
unbzip2-stream "^1.3.3"
1631616202
ws "^7.2.3"
1631716203

16318-
puppeteer@1.11.0, puppeteer@^1.11.0:
16204+
puppeteer@^1.11.0:
1631916205
version "1.11.0"
1632016206
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770"
1632116207
integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==
@@ -19797,7 +19683,7 @@ vue-router@^3.4.3, vue-router@^3.4.5:
1979719683
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.4.7.tgz#bf189bafd16f4e4ef783c4a6250a3090f2c1fa1b"
1979819684
integrity sha512-CbHXue5BLrDivOk5O4eZ0WT4Yj8XwdXa4kCnsEIOzYUPF/07ZukayA2jGxDCJxLc9SgVQX9QX0OuGOwGlVB4Qg==
1979919685

19800-
vue-server-renderer@^2.6.10, vue-server-renderer@^2.6.12:
19686+
vue-server-renderer@^2.6.10:
1980119687
version "2.6.12"
1980219688
resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.12.tgz#a8cb9c49439ef205293cb41c35d0d2b0541653a5"
1980319689
integrity sha512-3LODaOsnQx7iMFTBLjki8xSyOxhCtbZ+nQie0wWY4iOVeEtTg1a3YQAjd82WvKxrWHHTshjvLb7OXMc2/dYuxw==
@@ -19819,7 +19705,7 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
1981919705
hash-sum "^1.0.2"
1982019706
loader-utils "^1.0.2"
1982119707

19822-
vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.11, vue-template-compiler@^2.6.12:
19708+
vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.12:
1982319709
version "2.6.12"
1982419710
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e"
1982519711
integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==
@@ -19848,7 +19734,7 @@ vue-virtual-scroller@^1.0.10:
1984819734
vue-observe-visibility "^0.4.4"
1984919735
vue-resize "^0.4.5"
1985019736

19851-
vue@^2.6.10, vue@^2.6.11, vue@^2.6.12:
19737+
vue@^2.6.10, vue@^2.6.12:
1985219738
version "2.6.12"
1985319739
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
1985419740
integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==

0 commit comments

Comments
 (0)