개요
오랜만에 개인적으로 진행하던 사이드프로젝트를 리팩토링 해볼겸 로컬에서 서버를 올려봤는데 .. 동적으로 Google Trends 데이터를 받아오기 위해 사용하던 npm 패키지(https://www.npmjs.com/package/google-trends-api)가 어느순간 먹통이 되어 디버깅을 해보니 response가 왠 404 에러가 .. 뭐지 .. 하는 기분으로 goole trends 에 먼저 접속해봤더니 UI가 대폭 업데이트 되었다.. npm 에서 설치하여 사용하던 패키지는 Google 에서 공식적으로 제공해주는 라이브러리가 아니기에 해당 소스 repository의 github issue 탭을 들어가보니 아니나 다를까 UI 가 업데이트 되면서 Google Trends 자체적으로 clientside쪽에서 호출하는 여러 API들의 endpoint도 같이 변경된 것으로 보였고 나와 같은 고통을 겪는 다른 개발자들의 이슈 글들이 보였다.
2월달부터 게시된 이슈글이 아직 해결되지 않은 것을 보니 해당 패키지는 더이상 관리되지 않는 것으로 보였다.
좀 더 디깅을 해보다가 다른 개발자가 타입스크립트로 개발해놓은 패키지를 발견하였지만 기존 패키지보다 다소 기능이 많이 부족하여 해당 레포를 fork떠서 기존 기능들을 직접 추가하고 npm 에 배포해보기로 했다.
NPM 배포
개발 방식은 네트워크 탭에 들어가서 각 API들 request 및 payload를 분석하고 response 응답을 parsing 하여 만들었다.
(Google trends 에서 동적으로 클릭해서 요청이 발생하면 payload에 담기는 파라미터 값들이 패턴이 있어서 엄청 어렵지는 않았습니다.)
- package.json
{
"name": "@alkalisummer/google-trends-js",
"version": "0.1.0",
"description": "Google Trends API for Node.js",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"scripts": {
"build": "tsc",
"format": "prettier --write \"src/**/*.(js|ts)\"",
"lint": "eslint src --ext .js,.ts",
"lint:fix": "eslint src --fix --ext .js,.ts",
"test": "jest --config jest.config.js",
"prepare": "npm run build",
"prepublishOnly": "npm test && npm run lint",
"preversion": "npm run lint",
"version": "npm run format && git add -A src",
"postversion": "git push && git push --tags"
},
"repository": {
"type": "git",
"url": "git+https://github.com/alkalisummer/google-trends-js.git"
},
"keywords": [
"google trends",
"keyword",
"google",
"trends",
"API",
"search",
"typescript",
"npm",
"module"
],
"author": "alkalisummer",
"private": false,
"publishConfig": {
"access": "public"
},
"license": "MIT",
"devDependencies": {
"@types/jest": "29.5.14",
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
"eslint": "8.57.1",
"eslint-plugin-jest": "27.9.0",
"jest": "29.7.0",
"prettier": "2.8.8",
"ts-jest": "29.2.5",
"typescript": "4.9.5"
},
"files": [
"lib/**/*"
]
}
개발을 다하고 나면 package.json을 위와 같이 정보에 맞게 수정후
(새로 배포할 때마다 버전은 무조건 올려줘야 합니다.)
npm publish --access public
위 명령어로 npm 에 배포할 수 있습니다.
위와 같이 배포가 완료되면 npm에서 배포된 패키지 모듈을 확인할 수 있습니다.
기능에 관한 설명은 readme에 정리해놨습니다.
배포된 npm 패키지 url
https://www.npmjs.com/package/@alkalisummer/google-trends-js
@alkalisummer/google-trends-js
Google Trends API for Node.js. Latest version: 0.1.0, last published: an hour ago. Start using @alkalisummer/google-trends-js in your project by running `npm i @alkalisummer/google-trends-js`. There are no other projects in the npm registry using @alkalisu
www.npmjs.com