[axios] package.json이 bundling 결과물에 포함되는 버그
상황
rollup으로 프로젝트를 번들링한 후 결과물을 확인하던 중 아래와 같은 코드를 발견함.

axios의 package.json
파일이 최종 산출물에 포함되어 있음.
문제는 아래와 같이 axios 설정 경로가 코드에 드러나있다는 것.
axios의 package.json, wn = {
_where: "/Users/xxxxxx/workspace/zzzzzz"
}
- 사실 큰 문제는 아닌데 덕질 아이디를 썼다면 큰 낭패일 수 있다.
원인
package.json이 번들링되었다는건 어디선가 참조해서 사용한다는 뜻이다.
그래서 최종 산출물에 대응하는 axios의 실제 코드를 찾아봄.
최종 산출물의 일부 코드는 아래와 같다.
최종산출물 , bn = function(t, e) {
var n = {}
, r = ["url", "method", "data"]
, o = ["headers", "auth", "proxy", "params"]
, s = ["baseURL",
"transformRequest",
"transformResponse",
...,
"responseEncoding"]
, i = ["validateStatus"];
...
return Xe.forEach(u, l),
n
} // 1. 여기까지가 axios:/lib/core/mergeConfig.js에 해당
// 2. 여기가 package.json
, wn = {
_from: "axios@0.21.4",
_id: "axios@0.21.4",
_inBundle: !1,
_integrity: "sha512-ut5vewkiu8jjGBdqpM44XxjuC....",
_location: "/axios",
...,// 생략
typings: "./index.d.ts",
unpkg: "dist/axios.min.js",
version: "0.21.4"
}
, xn = {};
// 3. 여기가 axios:/lib/helpers/validator.js
["object", "boolean", "number", "function", "string", "symbol"].forEach((function(t, e) {
xn[t] = function(n) {
return typeof n === t || "a" + (e < 1 ? "n " : " ") + t
}
}
그리고 validator.js
파일을 열어보니 아래와 같이 package.json
을 import하고 있었다.
/lib/helpers/validator.js'use strict';
// 1. 이렇게 가져와서
var pkg = require('./../../package.json');
var validators = {};
['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(...);
// 2. 이렇게 버전을 따내고 있음
var currentVerArr = pkg.version.split('.');
위처럼 package.json
을 import했으니 최종 번들링에 지속적으로 불필요한 코드가 포함된 것.
이 버그는 이미 작년에 보고되어서 0.22.x 버전에서 고쳐진 모양