1
0
mirror of https://github.com/go-task/task.git synced 2025-03-29 21:57:04 +02:00
task/contributing/index.html

85 lines
28 KiB
HTML

<!doctype html>
<html lang="en-US" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-contributing">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">Contributing | Task</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://taskfile.dev/contributing/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="og:image" content="https://taskfile.dev/img/og-image.png"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Contributing | Task"><meta data-rh="true" name="description" content="Contributions to Task are very welcome, but we ask that you read this document"><meta data-rh="true" property="og:description" content="Contributions to Task are very welcome, but we ask that you read this document"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://taskfile.dev/contributing/"><link data-rh="true" rel="alternate" href="https://taskfile.dev/contributing/" hreflang="en-US"><link data-rh="true" rel="alternate" href="https://taskfile.dev/fr-FR/contributing/" hreflang="fr-FR"><link data-rh="true" rel="alternate" href="https://taskfile.dev/pt-BR/contributing/" hreflang="pt-BR"><link data-rh="true" rel="alternate" href="https://taskfile.dev/ru-RU/contributing/" hreflang="ru-RU"><link data-rh="true" rel="alternate" href="https://taskfile.dev/zh-Hans/contributing/" hreflang="zh-Hans"><link data-rh="true" rel="alternate" href="https://taskfile.dev/contributing/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://7IZIJ13AI7-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4RT25NXQ7N"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-4RT25NXQ7N",{anonymize_ip:!0})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Task" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.fbd3cd80.css">
<link rel="preload" href="/assets/js/runtime~main.d97cb3e4.js" as="script">
<link rel="preload" href="/assets/js/main.459ecfb0.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="Task Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo.svg" alt="Task Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Task</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/installation/">Installation</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/usage/">Usage</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/api/">API</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/donate/">Donate</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/contributing/" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en-US">English</a></li><li><a href="/fr-FR/contributing/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="fr-FR">Français (12%)</a></li><li><a href="/pt-BR/contributing/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="pt-BR">Português (12%)</a></li><li><a href="/ru-RU/contributing/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ru-RU">Pусский (51%)</a></li><li><a href="/zh-Hans/contributing/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-Hans">简体中文 (100%)</a></li><li><a class="dropdown__link" href="/translate/">Help Us Translate</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://github.com/go-task/task" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://twitter.com/taskfiledev" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://fosstodon.org/@task" target="_blank" rel="me" class="navbar__item navbar__link">Mastodon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://discord.gg/6TY36E39UK" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/">Home</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/installation/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/usage/">Usage</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/api/">API Reference</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/integrations/">Integrations</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/faq/">FAQ</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/styleguide/">Styleguide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/changelog/">Changelog</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/community/">Community</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" href="/contributing/">Contributing</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/releasing/">Releasing</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/taskfile-versions/">Taskfile Versions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/donate/">Donate</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/translate/">Translate</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Contributing</span><meta itemprop="position" content="1"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>Contributing</h1><p>Contributions to Task are very welcome, but we ask that you read this document
before submitting a PR.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>This document applies to the core <a href="https://github.com/go-task/task" target="_blank" rel="noopener noreferrer">Task</a> repository <em>and</em> <a href="https://github.com/go-task/vscode-task" target="_blank" rel="noopener noreferrer">Task for Visual
Studio Code</a>.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="before-you-start">Before you start<a href="#before-you-start" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><ul><li><strong>Check existing work</strong> - Is there an existing PR? Are there issues discussing
the feature/change you want to make? Please make sure you consider/address
these discussions in your work.</li><li><strong>Backwards compatibility</strong> - Will your change break existing Taskfiles? It is
much more likely that your change will merged if it backwards compatible. Is
there an approach you can take that maintains this compatibility? If not,
consider opening an issue first so that API changes can be discussed before
you invest your time into a PR.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-setup">1. Setup<a href="#1-setup" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><ul><li><strong>Go</strong> - Task is written in <a href="https://go.dev" target="_blank" rel="noopener noreferrer">Go</a>. We always support the latest two major
Go versions, so make sure your version is recent enough.</li><li><strong>Node.js</strong> - <a href="https://nodejs.org/en/" target="_blank" rel="noopener noreferrer">Node.js</a> is used to host Task&#x27;s documentation server
and is required if you want to run this server locally. It is also required if
you want to contribute to the Visual Studio Code extension.</li><li><strong>Yarn</strong> - <a href="https://yarnpkg.com/" target="_blank" rel="noopener noreferrer">Yarn</a> is the Node.js package manager used by Task.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-making-changes">2. Making changes<a href="#2-making-changes" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><ul><li><strong>Code style</strong> - Try to maintain the existing code style where possible. Go
code should be formatted by <a href="https://github.com/mvdan/gofumpt" target="_blank" rel="noopener noreferrer"><code>gofumpt</code></a> and linted using
<a href="https://golangci-lint.run" target="_blank" rel="noopener noreferrer"><code>golangci-lint</code></a>. Any Markdown or TypeScript files should be
formatted and linted by <a href="https://prettier.io" target="_blank" rel="noopener noreferrer">Prettier</a>. This style is enforced by our CI
to ensure that we have a consistent style across the project. You can use the
<code>task lint</code> command to lint the code locally and the <code>task lint:fix</code> command
to automatically fix any issues that are found.</li><li><strong>Documentation</strong> - Ensure that you add/update any relevant documentation. See
the <a href="#updating-documentation">updating documentation</a> section below.</li><li><strong>Tests</strong> - Ensure that you add/update any relevant tests and that all tests
are passing before submitting the PR. See the <a href="#writing-tests">writing tests</a>
section below.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running-your-changes">Running your changes<a href="#running-your-changes" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h3><p>To run Task with working changes, you can use <code>go run ./cmd/task</code>. To run a
development build of task against a test Taskfile in <code>testdata</code>, you can use
<code>go run ./cmd/task --dir ./testdata/&lt;my_test_dir&gt; &lt;task_name&gt;</code>.</p><p>To run Task for Visual Studio Code, you can open the project in VSCode and hit
F5 (or whatever you debug keybind is set to). This will open a new VSCode window
with the extension running. Debugging this way is recommended as it will allow
you to set breakpoints and step through the code. Otherwise, you can run
<code>task package</code> which will generate a <code>.vsix</code> file that can be used to manually
install the extension.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="updating-documentation">Updating documentation<a href="#updating-documentation" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h3><p>Task uses <a href="https://docusaurus.io" target="_blank" rel="noopener noreferrer">Docusaurus</a> to host a documentation server. The code for
this is located in the core Task repository. This can be setup and run locally
by using <code>task docs</code> (requires <code>nodejs</code> &amp; <code>yarn</code>). All content is written in
Markdown and is located in the <code>docs/docs</code> directory. All Markdown documents
should have an 80 character line wrap limit (enforced by Prettier).</p><p>When making a change, consider whether a change to the <a href="/usage/">Usage Guide</a>
is necessary. This document contains descriptions and examples of how to use
Task features. If you&#x27;re adding a new feature, try to find an appropriate place
to add a new section. If you&#x27;re updating an existing feature, ensure that the
documentation and any examples are up-to-date. Ensure that any examples follow
the <a href="/styleguide/">Taskfile Styleguide</a>.</p><p>If you added a new field, command or flag, ensure that you add it to the
<a href="/api/">API Reference</a>. New fields also need to be added to the
<a href="https://github.com/go-task/task/blob/main/docs/static/schema.json" target="_blank" rel="noopener noreferrer">JSON Schema</a>. The descriptions for fields in the API reference and
the schema should match.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="writing-tests">Writing tests<a href="#writing-tests" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h3><p>A lot of Task&#x27;s tests are held in the <code>task_test.go</code> file in the project root
and this is where you&#x27;ll most likely want to add new ones too. Most of these
tests also have a subdirectory in the <code>testdata</code> directory where any
Taskfiles/data required to run the tests are stored.</p><p>When making a changes, consider whether new tests are required. These tests
should ensure that the functionality you are adding will continue to work in the
future. Existing tests may also need updating if you have changed Task&#x27;s
behavior.</p><p>You may also consider adding unit tests for any new functions you have added.
The unit tests should follow the Go convention of being location in a file named
<code>*_test.go</code> in the same package as the code being tested.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-committing-your-code">3. Committing your code<a href="#3-committing-your-code" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><p>Try to write meaningful commit messages and avoid having too many commits on the
PR. Most PRs should likely have a single commit (although for bigger PRs it may
be reasonable to split it in a few). Git squash and rebase is your friend!</p><p>If you&#x27;re not sure how to format your commit message, check out <a href="https://www.conventionalcommits.org" target="_blank" rel="noopener noreferrer">Conventional
Commits</a>. This style is not enforced, but it is a good way
to make your commit messages more readable and consistent.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-submitting-a-pr">4. Submitting a PR<a href="#4-submitting-a-pr" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><ul><li><strong>Describe your changes</strong> - Ensure that you provide a comprehensive
description of your changes.</li><li><strong>Issue/PR links</strong> - Link any previous work such as related issues or PRs.
Please describe how your changes differ to/extend this work.</li><li><strong>Examples</strong> - Add any examples or screenshots that you think are useful to
demonstrate the effect of your changes.</li><li><strong>Draft PRs</strong> - If your changes are incomplete, but you would like to discuss
them, open the PR as a draft and add a comment to start a discussion. Using
comments rather than the PR description allows the description to be updated
later while preserving any discussions.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a href="#faq" class="hash-link" aria-label="Direct link to heading" title="Direct link to heading"></a></h2><blockquote><p>I want to contribute, where do I start?</p></blockquote><p>Take a look at the list of <a href="https://github.com/go-task/task/issues" target="_blank" rel="noopener noreferrer">open issues for Task</a> or <a href="https://github.com/go-task/vscode-task/issues" target="_blank" rel="noopener noreferrer">Task for
Visual Studio Code</a>. We have a <a href="https://github.com/go-task/task/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22" target="_blank" rel="noopener noreferrer">good first
issue</a> label for simpler issues that are ideal for first time
contributions.</p><p>All kinds of contributions are welcome, whether its a typo fix or a shiny new
feature. You can also contribute by upvoting/commenting on issues, helping to
answer questions or contributing to other <a href="/community/">community projects</a>.</p><blockquote><p>I&#x27;m stuck, where can I get help?</p></blockquote><p>If you have questions, feel free to ask them in the <code>#help</code> forum channel on our
<a href="https://discord.gg/6TY36E39UK" target="_blank" rel="noopener noreferrer">Discord server</a> or open a <a href="https://github.com/go-task/task/discussions" target="_blank" rel="noopener noreferrer">Discussion</a> on GitHub.</p><hr></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/community/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Community</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/releasing/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Releasing</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#before-you-start" class="table-of-contents__link toc-highlight">Before you start</a></li><li><a href="#1-setup" class="table-of-contents__link toc-highlight">1. Setup</a></li><li><a href="#2-making-changes" class="table-of-contents__link toc-highlight">2. Making changes</a><ul><li><a href="#running-your-changes" class="table-of-contents__link toc-highlight">Running your changes</a></li><li><a href="#updating-documentation" class="table-of-contents__link toc-highlight">Updating documentation</a></li><li><a href="#writing-tests" class="table-of-contents__link toc-highlight">Writing tests</a></li></ul></li><li><a href="#3-committing-your-code" class="table-of-contents__link toc-highlight">3. Committing your code</a></li><li><a href="#4-submitting-a-pr" class="table-of-contents__link toc-highlight">4. Submitting a PR</a></li><li><a href="#faq" class="table-of-contents__link toc-highlight">FAQ</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Pages</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/installation/">Installation</a></li><li class="footer__item"><a class="footer__link-item" href="/usage/">Usage</a></li><li class="footer__item"><a class="footer__link-item" href="/donate/">Donate</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/go-task/task" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://twitter.com/taskfiledev" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://fosstodon.org/@task" target="_blank" rel="me" class="footer__link-item">Mastodon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/6TY36E39UK" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://opencollective.com/task" target="_blank" rel="noopener noreferrer" class="footer__link-item">OpenCollective<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div></div></footer></div>
<script src="/assets/js/runtime~main.d97cb3e4.js"></script>
<script src="/assets/js/main.459ecfb0.js"></script>
</body>
</html>