<titledata-rh="true">Taskfile Versions | Task</title><metadata-rh="true"name="viewport"content="width=device-width,initial-scale=1"><metadata-rh="true"name="twitter:card"content="summary_large_image"><metadata-rh="true"property="og:url"content="https://taskfile.dev/taskfile-versions/"><metadata-rh="true"name="docusaurus_locale"content="en"><metadata-rh="true"name="docsearch:language"content="en"><metadata-rh="true"name="og:image"content="https://taskfile.dev/img/og-image.png"><metadata-rh="true"name="docusaurus_version"content="current"><metadata-rh="true"name="docusaurus_tag"content="docs-default-current"><metadata-rh="true"name="docsearch:version"content="current"><metadata-rh="true"name="docsearch:docusaurus_tag"content="docs-default-current"><metadata-rh="true"property="og:title"content="Taskfile Versions | Task"><metadata-rh="true"name="description"content="The Taskfile syntax and features changed with time. This document explains what"><metadata-rh="true"property="og:description"content="The Taskfile syntax and features changed with time. This document explains what"><linkdata-rh="true"rel="icon"href="/img/favicon.ico"><linkdata-rh="true"rel="canonical"href="https://taskfile.dev/taskfile-versions/"><linkdata-rh="true"rel="alternate"href="https://taskfile.dev/taskfile-versions/"hreflang="en-US"><linkdata-rh="true"rel="alternate"href="https://taskfile.dev/zh-Hans/taskfile-versions/"hreflang="zh-Hans"><linkdata-rh="true"rel="alternate"href="https://taskfile.dev/taskfile-versions/"hreflang="x-default"><linkdata-rh="true"rel="preconnect"href="https://7IZIJ13AI7-dsn.algolia.net"crossorigin="anonymous"><linkrel="preconnect"href="https://www.google-analytics.com">
changed on each version and how to upgrade your Taskfile.</p><h2class="anchor anchorWithStickyNavbar_LWe7"id="what-the-taskfile-version-mean">What the Taskfile version mean<ahref="#what-the-taskfile-version-mean"class="hash-link"aria-label="Direct link to heading"title="Direct link to heading"></a></h2><p>The Taskfile version follows the Task version. E.g. the change to Taskfile
version <code>2</code> means that Task <code>v2.0.0</code> should be release to support it.</p><p>The <code>version:</code> key on Taskfile accepts a semver string, so either <code>2</code>, <code>2.0</code> or
<code>2.0.0</code> is accepted. If you choose to use <code>2.0</code> Task will not enable future
<code>2.1</code> features, but if you choose to use <code>2</code>, then any <code>2.x.x</code> features will be
available, but not <code>3.0.0+</code>.</p><h2class="anchor anchorWithStickyNavbar_LWe7"id="version-1">Version 1<ahref="#version-1"class="hash-link"aria-label="Direct link to heading"title="Direct link to heading"></a></h2><blockquote><p>NOTE: Taskfiles in version 1 are not supported on Task >= v3.0.0 anymore.</p></blockquote><p>In the first version of the <code>Taskfile</code>, the <code>version:</code> key was not available,
because the tasks was in the root of the YAML document. Like this:</p><divclass="language-yaml codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#22863A">echo</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "Hello</span><spanclass="token punctuation"style="color:#393A34">,</span><spanclass="token plain"> World</span><spanclass="token tag"style="color:#22863A">!</span><spanclass="token plain">"</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgclass="copyButtonIcon_y97N"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_LjdS"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The variable priority order was also different:</p><ol><li>Call variables</li><li>Environment</li><li>Task variables</li><li><code>Taskvars.yml</code> variables</li></ol><h2class="anchor anchorWithStickyNavbar_LWe7"id="version-20">Version 2.0<ahref="#version-20"class="hash-link"aria-label="Direct link to heading"title="Direct link to heading"></a></h2><p>At version 2, we introduced the <code>version:</code> key, to allow us to evolve Task with
new features without breaking existing Taskfiles. The new syntax is as follows:</p><divclass="language-yaml codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#22863A">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#C6105F">'2'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">echo</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "Hello</span><spanclass="token punctuation"style="color:#393A34">,</span><spanclass="token plain"> World</span><spanclass="token tag"style="color:#22863A">!</span><spanclass="token plain">"</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgclass="copyButtonIcon_y97N"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_LjdS"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Version 2 allows you to write global variables directly in the Taskfile, if you
don't want to create a <code>Taskvars.yml</code>:</p><divclass="language-yaml codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#22863A">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#C6105F">'2'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">vars</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">GREETING</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> Hello</span><spanclass="token punctuation"style="color:#393A34">,</span><spanclass="token plain"> World</span><spanclass="token tag"style="color:#22863A">!</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">greet</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#22863A">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">.GREETING</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain">"</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgclass="copyButtonIcon_y97N"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_LjdS"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The variable priority order changed to the following:</p><ol><li>Task variables</li><li>Call variables</li><li>Taskfile variables</li><li>Taskvars file variables</li><li>Environment variables</li></ol><p>A new global option was added to configure the number of variables expansions
<code>TIMESTAMP</code> which contains, respectively, the md5 checksum and greatest
modification timestamp of the files listed on <code>sources:</code></li><li>Also, the <code>TASK</code> variable is always available with the current task name</li><li>CLI variables are always treated as global variables</li><li>Added <code>dir:</code> option to <code>includes</code> to allow choosing on which directory an