[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 버전에서 고쳐진 모양