자동 스크립트를 사용하여 Chrome 확장 자동 게시
에서 설정한 크롬 확장을 자동으로 발표합니다.
이 문장은 매우 길겠지만, 마지막으로, 너는 위대한 것이 네 손에 있을 것이다.
이 문서에서는 다음 항목에 주목합니다.
확장 폴더 구조 변경
시작하기 전에 에서 만든 확장 폴더 구조를 다시 설정합니다.
이것은 우리가 코드를 관리하고 다음 단계에서 확장 zip을 만드는 데 도움을 줄 것입니다.이를 위해 프로젝트 디렉터리
[app]
에 새 폴더를 만들고 모든 확장 파일을 [app]
폴더로 이동합니다.웹 팩과 같은 구축 도구를 사용하고 있다면, 필요에 따라 이 설정을 변경할 수 있습니다.
패키지를 설치합니다.필요한 NPM 패키지 설치를 위한 json 파일
이제 npm 패키지를 사용할 때가 되었습니다. 이것은 우리가 과정을 자동화하는 데 도움을 줄 것입니다.
이 소프트웨어 패키지를 사용하면 우리의 업무량을 줄이고 일을 더욱 쉽게 할 수 있다.
우리가 필요로 하는 소프트웨어 패키지: -
J 파일 - npm ->
이것은 우리가 명세서를 읽는 데 도움을 줄 것이다.json 파일은 확장된 버전을 업데이트합니다.
로컬 우편 번호 - npm ->
코드를 생성하는 zip 파일을 사용할 것입니다.
fs 추가 - npm ->
fs extra는 zip 파일을 버퍼로 읽는 데 도움을 줄 것입니다
chrome webstore manager-npm ->
이것은 우리가 프로세스를 자동화하는 데 필요한 가장 중요한 소프트웨어 패키지다.
경로 - 노드에서 기본적으로 제공됩니다.따라서 명시적으로 설치할 필요가 없습니다.
이제 가방으로 완성합시다.json
What is the package.json file?
The file holds various metadata relevant to the project. This file is used to give information to npm that allows it to identify the project as well as handle the project's dependencies.
To know more click here
패키지를 만들고 초기화합니다.json 파일은 터미널에서 다음 명령을 실행합니다.
npm init
기본 옵션을 사용하거나 필요에 따라 세부 정보를 추가합니다.패키지를 생성한 후json, 내가 언급한 의존항을 설치할 때가 되었다.
이렇게 하려면 다음 명령을 실행하십시오. -
npm install jsonfile zip-local fs-extra chrome-webstore-manager --save-dev
Save dev - 이 옵션은 패키지에 종속 항목을 저장합니다.devdependences 속성의 json입니다.이것은 가방의 최종 구조다.json
코드 푸시 자동 배포를 위한 Github 작업 설정
GitHub 작업을 통해 자동 작업을 추가할 수 있습니다.GitHub repo에서 특정 작업을 트리거하면
우리의 예에서, 우리는 npm 명령을 실행하고, 실행 노드를 통해 확장을 배치해야 한다.js 스크립트
github 작업에 대한 더 많은 정보를 알고 싶으면 here
다음은 GitHub 작업 예제입니다
이 파일을 GitHub 작업에 그대로 추가합니다
이 파일을 어디에 추가합니까?🤔
다음 폴더 구조를 작성하여 작업 흐름 파일을 추가합니다
-> Chrome-extension-demo
-> app //Our extension code
-> .github
-> workflows
-> action.yml
Let’s set up Google credentials to allow uploading extension
자동 게시를 위해서는 Google 개발자 콘솔에서 프로젝트에 Chrome Web Store API를 활성화해야 합니다
- 구글 개발자 컨트롤러 방문.
- 새 프로젝트를 만들거나 기존 프로젝트를 선택합니다.
- 왼쪽 사이드바에서 API & 선택;인증
- 표시되는 사용 가능한 API 목록에서 Chrome Web Store API 상태를 ON으로 설정합니다.
- 서비스 약관을 수락하다.
- 왼쪽 사이드바에서 자격 증명을 선택합니다.
- 고객 ID 및 고객 기밀 작성
- 자격 증명 작성 클릭
- OAuth 클라이언트 ID 선택
-
응용 프로그램 형식의 데스크톱 응용 프로그램 - 신청 이름 입력
- 만들기 버튼을 클릭합니다.
🥳 그래우리는 고객 Id와 고객 기밀을 얻었습니다
방문 영패 획득:
클라이언트 ID와 클라이언트 기밀을 가지고 있으면 방문 영패를 검색하고 영패를 새로 고칠 수 있습니다.액세스 영패는 우리의 스크립트 업로드와 발표 확장을 권한을 부여합니다
Note:- Access token gets expired after 40 minutes. So, we will always need to create a new one while deploying our extension in a continuous deployment process.
새로운access\u영패를 만들기 위해refresh\u영패를 사용합니다
Let’s generate access_token and refresh_token:
- 다음 URL을 사용하여access\u영패를 생성하는 코드 생성
https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id=$CLIENT_ID&redirect_uri=urn:ietf:wg:oauth:2.0:oob
이전 단계에서 생성한 클라이언트 ID로 $CLIENT\u ID를 대체합니다
업데이트된 URL을 브라우저에 붙여넣고 Enter 키를 누릅니다
확장된 동일한 구글 계정 업로드 선택
크롬 확장 및 응용 프로그램을 보고 관리할 수 있는 권한을 부여합니다
- 권한을 수여한 후, 우리는 권한 수여 코드를 얻는다.
이 코드를 복사하여access\u 영패를 생성합니다.
- 터미널을 열어 다음curl 요청을 실행합니다.
상기 코드를 사용하여 영패에 접근을 요청합니다.예를 들어curl을 사용하면 다음 명령을 실행하여 액세스 토큰을 얻을 수 있습니다($CLIENT\u ID, $CLIENT\u SECRET 및 $CODE 값을 상기 값으로 대체).
curl "https://accounts.google.com/o/oauth2/token" -d \
"client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&code=$CODE&grant_type=authorization_code&redirect_uri=urn:ietf:wg:oauth:2.0:oob"
이것은 결과를 되돌려줍니다. 예를 들어
{
"access_token" : "ya29...",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/rwn..."
}
새로 고침 영패를 적어 두세요. 배치 스크립트에서 이 영패를 사용할 것입니다
Write a script to publish an extension to web-store
확장된 루트 수준에서 새 JavaScript 파일을 만들고 deploy로 이름을 지정합니다.js회사
- 필요한 포장 포함
NPM을 사용하여 설치한 패키지를 가져옵니다.
const fs = require('fs-extra');
const zipper = require("zip-local");
const jsonfile = require('jsonfile');
const path = require('path');
const ChromeWebstore = require('chrome-webstore-manager');
- 생성 경로 설정
const itemId = "EXTENSION_ID";
var buildLocation = path.join(__dirname, "app");
EXTENSION\u ID를 업로드로 교체
Id는 다음과 같이 보일 수 있습니다. - ecjchthpmtdecenmykiuipbibkhcijlj
- 확장 버전 업데이트
새 패키지를 상점에 업로드할 때 새 버전을 추가합니다.구글은 같은 버전의 새 패키지를 업로드하는 것을 허락하지 않는다.
목록 파일 읽기
새 버전 생성
새 버전 업데이트 사용
업데이트 버전을 사용하여 목록 파일 쓰기
// read manifest file
var manifest = jsonfile.readFileSync(path.join(buildLocation, "manifest.json"));
function getNewVersion() {
var ver = parseInt(manifest.version.split('.')[0]);
ver++;
return `${ver}.0.0`;
}
var version = getNewVersion();
// replace version
manifest.version = version;
// save manifest file
jsonfile.writeFileSync(path.join(buildLocation, "manifest.json"), manifest);
- zip 파일을 생성하고 이 파일을 읽어서 저장에 불러옵니다.
// create zip
zipper.sync.zip(buildLocation).compress().save(path.join(buildLocation, "build.zip"));
const fileBin = fs.readFileSync(path.join(buildLocation, "build.zip"));
- 클라이언트 Id 및 클라이언트 기밀로 웹스토어 초기화
// Initialize with ClientID and ClinetSecret
const chromeWebstore = new ChromeWebstore("<CLIENT_ID>", "<CLIENT_SECRET>");
CLIENT\u ID 및 CLIENT\u SECRET
- 새로운access_영패 생성
다음 함수를 사용하여 새로운access\u 영패를 만듭니다.
chromeWebstore.getRefreshToken("<REFRESH_TOKEN>")
우리가 이전 과정에서 생성한 REFRESH\u 영패로 REFRESH\u 영패를 교체
- 확장자 zip을 상점에 업로드
chromeWebstore.updateItem(newToken, fileBin, itemId)
6단계에서 우리는 새로운access\u영패를 포함하는 대상을 되돌려주는promise를 얻을 것이다
이 액세스 영패를 사용하여 chrome Webstore 업데이트 방법으로 확장 zip
- 출시 확장
chromeWebstore.publishItem(newToken, itemId)
업로드가 완료되면 확장을 발표할 수 있습니다
발표를 위해 크롬 웹스토어의publish Item 방법을 사용합니다
Let’s keep the last 3 steps together to complete our script.
// Get new token with refresh_token
chromeWebstore.getRefreshToken("<REFRESH_TOKEN>").then(function (data) {
const json = JSON.parse(data)
const newToken = json.access_token
chromeWebstore.updateItem(newToken, fileBin, itemId).then((data) => {
console.log(data);
chromeWebstore.publishItem(newToken, itemId).then((data) => {
console.log(data);
});
});
});
console.log("Deployed version is " + version);
Hoorayyyyy! 🎉🎉
마지막으로, 우리는 배치 스크립트의 창설을 완성하였습니다
이제 확장 코드를 리셋 프로토콜에 밀어넣으면 Github 작업이 발생합니다
작업 흐름 파일에서 배치 스크립트를 터치하는 명령을 만들었습니다. 확장은 배치 스크립트를 사용하여 자동으로 업데이트됩니다
이것은 매우 긴 문장입니다. 왜냐하면 저는 해야 할 해석이 많기 때문입니다
좋아했으면 좋겠어
시간 내주셔서 감사합니다
마음에 드셨으면 좋겠어요.공유**
즐거운 인코딩
Reference
이 문제에 관하여(자동 스크립트를 사용하여 Chrome 확장 자동 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ganeshjaiwal/automate-chrome-extension-publish-using-an-automated-script-3a7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)