Во время моей работы с расширением кода Visual Studio Ангулартс Я более чем однажды раздражающе забыл один из шагов в развертывании.
Это не сложный набор задач, но в моем списке вещей, чтобы сделать при упаковке новой версии, мне нужно:
- Убедитесь, что номер версии в Package.json был обновлен.
- Убедитесь, что файл changelog.md был обновлен с описанием begfixes и новых функций.
- Создайте тег для версии в репозитории Git.
- Беги
VSCE пакет
Чтобы создать файл пакета VSIX.
Поэтому я автоматизировал задачи с помощью сценария Python ниже:
import os import json import re from git import Repo, TagReference def readVersionFromPackageJson(): packageJson = open("package.json", "r") contentRaw = packageJson.read() contentJson = json.loads(contentRaw) packageJson.close() return contentJson["version"] def isPackageJsonVersionTagged(repo, packageJsonVersion): packageJsonVersionTagFound = False for tag in repo.tags: if tag.name == packageJsonVersion: packageJsonVersionTagFound = True break return packageJsonVersionTagFound def isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion): packageJsonVersionChangeLogEntryFound = False changeLog = open("CHANGELOG.md", "r") changeLogContent = changeLog.readlines() changeLog.close() for line in changeLogContent: match = re.search(f"^## Version {packageJsonVersion}$", line) if match: packageJsonVersionChangeLogEntryFound = True break return packageJsonVersionChangeLogEntryFound def packageExtension(): os.system("vsce package") def main(): packageJsonVersion = readVersionFromPackageJson() repo = Repo("./") packageJsonVersionTagFound = isPackageJsonVersionTagged(repo, packageJsonVersion) packageJsonVersionChangeLogEntryFound = isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion) if not packageJsonVersionChangeLogEntryFound: print("Fail: CHANGELOG.md not update!") else: if not packageJsonVersionTagFound: print(f"New version found in package.json: {packageJsonVersion}.") print("Creating tag in Git...") repo.create_tag(packageJsonVersion) print("Creating vsix package...") packageExtension() else: print(f"Fail: Version already tagged: {packageJsonVersion}.") print("No vsix package created") main()
Я надеюсь, что вы найдете это полезным или что он вдохновляет вас автоматизировать некоторые из ваших скучных или раздражающих задач.
Вы можете найти скрипт и код для Angulartools на Github Отказ
Оригинал: “https://dev.to/coderallan/automate-packaging-of-visual-studio-code-extension-3gg4”