Skip to content

2. Technical reference & contributing guidance

Adam WΓ³jcik edited this page Jul 17, 2024 · 2 revisions

πŸ™‹β€β™‚οΈ Contribute guidance

πŸ‘‰ Before you start working on an issue, be sure to check out our Contribution guidelinesπŸ‘.

πŸ‘‰ Project structure

The main definition of the project is (as always) in the package.json file. Besides the dependencies in that file, we may find most of the VS Code extension capabilities and details present in the VS Code marketplace.

β”œβ”€β”€ assets // Keeps all the graphical files connected to the project (either used in the extension or in docs)
β”‚   └── images // Keeps images used in readme file
β”œβ”€β”€ constants // Static strings
β”œβ”€β”€ data // Keeps .json files which store info about all the samples or scenarios of a given PnP sample gallery repo
β”œβ”€β”€ media // Keeps additional font used by the extension for icons
β”œβ”€β”€ models // models/interfaces used as method inputs or outputs
β”œβ”€β”€ scripts // Keeps all the scripts used for maintenance or in pipelines
β”œβ”€β”€ snippets // Keeps the snippets definition
β”œβ”€β”€ src // Extension main definitions for panels
β”œβ”€β”€ webview-ui // Keeps small react apps that build each part/functionality of the extension
β”‚   β”œβ”€β”€ commandList // webview react app that creates the command list
β”‚   β”œβ”€β”€ docsView // webview react app that creates the docs view
β”‚   β”œβ”€β”€ samplesView // webview react app that creates the samples view

πŸ‘‰ Tech used

The extension was developed using the following tech:

  • React.js
  • TypeScript

πŸ‘‰ Extension Capabilities

The extension uses the following VS Code extension capabilities:

🦾 Pipelines

Currently in the project we have 4 pipelines:

  • Prepare Release - This pipeline is scheduled by corn. It creates a PR that prepares the extension for new patch release. It rechecks the CLI for Microsoft 365 and PnP Scrip Sample repo to create data needed for the extension and updates the extension number in package.json file to prepare it for next patch release.
  • Release - Runs when new GitHub Release (or rather new tag) is added to a commit. Should be triggered by creating a new GitHub Release after merging all the PR's and merging the Prepare Release PR. It builds the extension and publishes it to marketplace.
  • Create .vsix package - The aim of this workflow is to create .vsix package to be downloaded from the artifacts and tested locally.