| OLD | NEW |
| (Empty) |
| 1 <ol class="toc"> | |
| 2 <li><a href="#name">Name</a></li> | |
| 3 <li><a href="#version">Version</a></li> | |
| 4 <li><a href="#description">Description</a></li> | |
| 5 <li><a href="#authorauthors">Author/Authors</a></li> | |
| 6 <li><a href="#homepage">Homepage</a></li> | |
| 7 <li><a href="#documentation">Documentation</a></li> | |
| 8 <li><a href="#dependencies">Dependencies</a></li> | |
| 9 <li><a href="#sdk-constraints">SDK constraints</a></li> | |
| 10 </ol> | |
| 11 | |
| 12 <p>Every pub package needs some metadata so it can specify its | |
| 13 <a href="glossary.html#dependency">dependencies</a>. Pub packages that are share
d with | |
| 14 others also need to provide some other information so users can discover them. | |
| 15 Pub stores this in a file named <code>pubspec.yaml</code>, which (naturally) is
written in | |
| 16 the <a href="http://www.yaml.org/">YAML</a> language.</p> | |
| 17 | |
| 18 <p>At the top level are a series of fields. The currently supported ones are:</p
> | |
| 19 | |
| 20 <dl class="dl-horizontal"> | |
| 21 <dt>Name</dt> | |
| 22 <dd>Required for every package.</dd> | |
| 23 <dt>Version</dt> | |
| 24 <dd>Required for packages that will be hosted on pub.dartlang.org.</dd> | |
| 25 <dt>Description</dt> | |
| 26 <dd>Required for packages that will be hosted on pub.dartlang.org.</dd> | |
| 27 <dt>Author/Authors</dt> | |
| 28 <dd>Optional.</dd> | |
| 29 <dt>Homepage</dt> | |
| 30 <dd>Optional.</dd> | |
| 31 <dt>Documentation</dt> | |
| 32 <dd>Optional.</dd> | |
| 33 <dt>Dependencies</dt> | |
| 34 <dd>Can be omitted if your package has no dependencies.</dd> | |
| 35 <dt>Dev dependencies</dt> | |
| 36 <dd>Can be omitted if your package has no dev dependencies.</dd> | |
| 37 </dl> | |
| 38 | |
| 39 <p>All other fields will be ignored. A simple but complete pubspec looks somethi
ng | |
| 40 like this:</p> | |
| 41 | |
| 42 <div class="highlight"><pre><code class="yaml"><span class="l-Scalar-Plain">name
</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">newtify</
span> | |
| 43 <span class="l-Scalar-Plain">version</span><span class="p-Indicator">:</span> <s
pan class="l-Scalar-Plain">1.2.3</span> | |
| 44 <span class="l-Scalar-Plain">description</span><span class="p-Indicator">:</span
> <span class="p-Indicator">></span> | |
| 45 <span class="no">Have you been turned into a newt? Would you like to be? This<
/span> | |
| 46 <span class="no">package can help: it has all of the newt-transmogrification</
span> | |
| 47 <span class="no">functionality you've been looking for.</span> | |
| 48 <span class="l-Scalar-Plain">author</span><span class="p-Indicator">:</span> <sp
an class="l-Scalar-Plain">Nathan Weizenbaum <nweiz@google.com></span> | |
| 49 <span class="l-Scalar-Plain">homepage</span><span class="p-Indicator">:</span> <
span class="l-Scalar-Plain">http://newtify.dartlang.org</span> | |
| 50 <span class="l-Scalar-Plain">documentation</span><span class="p-Indicator">:</sp
an> <span class="l-Scalar-Plain">http://docs.newtify.com</span> | |
| 51 <span class="l-Scalar-Plain">dependencies</span><span class="p-Indicator">:</spa
n> | |
| 52 <span class="l-Scalar-Plain">efts</span><span class="p-Indicator">:</span> <sp
an class="s">'>=2.0.4</span><span class="nv"> </span><span class="s"><
3.0.0'</span> | |
| 53 <span class="l-Scalar-Plain">transmogrify</span><span class="p-Indicator">:</s
pan> <span class="s">'>=0.4.0'</span> | |
| 54 <span class="l-Scalar-Plain">dev_dependencies</span><span class="p-Indicator">:<
/span> | |
| 55 <span class="l-Scalar-Plain">unittest</span><span class="p-Indicator">:</span>
<span class="s">'>=0.6.0'</span> | |
| 56 </code></pre></div> | |
| 57 | |
| 58 <h2 id="name">Name</h2> | |
| 59 | |
| 60 <p>Every package needs a name. When your stellar code gets props on | |
| 61 the world stage, this is what they’ll be hollering. Also, it’s how o
ther | |
| 62 packages will refer to yours, and how it will appear here, should you publish | |
| 63 it.</p> | |
| 64 | |
| 65 <p>It should be all lowercase, with underscores to separate words, | |
| 66 <code>just_like_this</code>. Stick with basic Latin letters and Arabic digits: | |
| 67 <code>[a-z0-9_]</code> and ensure that it’s a valid Dart identifier (i.e.
doesn’t start | |
| 68 with digits and isn’t a reserved word).</p> | |
| 69 | |
| 70 <p>Try to pick a name that is clear, terse, and not already in use. A quick sear
ch | |
| 71 <a href="/packages">here</a> to make sure nothing else is using your name can sa
ve you | |
| 72 heartache later.</p> | |
| 73 | |
| 74 <h2 id="version">Version</h2> | |
| 75 | |
| 76 <p>Every package has a version. A version number is required to host your packag
e | |
| 77 here, but can be omitted for local-only packages. If you omit it, your package | |
| 78 is implicitly versioned <code>0.0.0</code>.</p> | |
| 79 | |
| 80 <p>No one really gets excited about versioning, but it’s a necessary evil
for | |
| 81 reusing code while letting it evolve quickly. A version number is three numbers | |
| 82 separated by dots, like <code>0.2.43</code>. It can also optionally have a build | |
| 83 (<code>+hotfix.oopsie</code>) or pre-release (<code>-alpha.12</code>) suffix.</p
> | |
| 84 | |
| 85 <p>Each time you publish your package, you will publish it at a specific version
. | |
| 86 Once that’s been done, consider it hermetically sealed: you can’t to
uch it | |
| 87 anymore. To make more changes, you’ll need a new version.</p> | |
| 88 | |
| 89 <p>When you select a version, follow <a href="http://semver.org/">semantic versi
oning</a>. When you do, the | |
| 90 clouds will part and sunshine will pour into your soul. If you don’t, prep
are | |
| 91 yourself for hordes of angry users.</p> | |
| 92 | |
| 93 <h2 id="description">Description</h2> | |
| 94 | |
| 95 <p>This is optional for your own personal packages, but if you intend to share | |
| 96 your package with the world (and you should because, let’s be honest with | |
| 97 ourselves, it’s a thing of beauty) you must provide a description. This sh
ould | |
| 98 be relatively short—a few sentences, maybe a whole paragraph—and | |
| 99 tells a casual reader what they might want to know about your package.</p> | |
| 100 | |
| 101 <p>Think of the description as the sales pitch for your package. Users will see
it | |
| 102 when they <a href="/packages">browse for packages</a>. It should be simple plain
text: | |
| 103 no markdown or HTML. That’s what your README is for.</p> | |
| 104 | |
| 105 <h2 id="authorauthors">Author/Authors</h2> | |
| 106 | |
| 107 <p>You’re encouraged to use these fields to describe the author(s) of your
package | |
| 108 and provide contact information. <code>author</code> should be used if your pack
age has a | |
| 109 single author, while <code>authors</code> should be used with a YAML list if mor
e than one | |
| 110 person wrote the package. Each author can either be a single name (e.g. <code>Na
than | |
| 111 Weizenbaum</code>) or a name and an email address (e.g. <code>Nathan Weizenbaum | |
| 112 <nweiz@google.com></code>). For example:</p> | |
| 113 | |
| 114 <div class="highlight"><pre><code class="yaml"><span class="l-Scalar-Plain">auth
ors</span><span class="p-Indicator">:</span> | |
| 115 <span class="p-Indicator">-</span> <span class="l-Scalar-Plain">Nathan Weizenbau
m <nweiz@google.com></span> | |
| 116 <span class="p-Indicator">-</span> <span class="l-Scalar-Plain">Bob Nystrom <
rnystrom@google.com></span> | |
| 117 </code></pre></div> | |
| 118 | |
| 119 <p>If anyone uploads your package here, we will show this email address so make | |
| 120 sure you’re OK with that.</p> | |
| 121 | |
| 122 <h2 id="homepage">Homepage</h2> | |
| 123 | |
| 124 <p>This should be a URL pointing to the website for your package. For | |
| 125 <a href="#hosted-packages">hosted packages</a>, this URL will be linked from the | |
| 126 package’s page. While this is technically optional <em>please do</em> prov
ide one. It | |
| 127 helps users understand where your package is coming from. If nothing else, you | |
| 128 can always use the URL where you host the source code: | |
| 129 <a href="http://github.com">GitHub</a>, <a href="http://code.google.com/">code.g
oogle.com</a>, | |
| 130 whatever.</p> | |
| 131 | |
| 132 <h2 id="documentation">Documentation</h2> | |
| 133 | |
| 134 <p>Some packages may have a site that hosts documentation separate from the main | |
| 135 homepage. If your package has that, you can also add a <code>documentation:</cod
e> field | |
| 136 with that URL. If provided, a link to it will be shown on your package’s p
age.</p> | |
| 137 | |
| 138 <h2 id="dependencies">Dependencies</h2> | |
| 139 | |
| 140 <div class="learn-more"> | |
| 141 <a href="/doc/dependencies.html"> | |
| 142 Learn more about dependencies → | |
| 143 </a> | |
| 144 </div> | |
| 145 | |
| 146 <p>Finally, the pubspec’s <em>raison d’ĂȘtre</em>: <a href="glossary.
html#dependency">dependencies</a>. Here, | |
| 147 you list each package that your package needs in order to work.</p> | |
| 148 | |
| 149 <p>There are two separate sections. Dependencies under <code>dependencies:</code
> are | |
| 150 “regular” dependencies. They are packages that anyone using your pac
kage will | |
| 151 also need. Dependencies under <code>dev_dependencies</code> are | |
| 152 <a href="glossary.html#dev-dependency">dev dependencies</a>. These are packages
that are | |
| 153 only needed in the development of your package itself.</p> | |
| 154 | |
| 155 <h2 id="sdk-constraints">SDK constraints</h2> | |
| 156 | |
| 157 <p>A package can indicate which versions of its dependencies it supports, but th
ere | |
| 158 is also another implicit dependency all packages have: the Dart SDK itself. | |
| 159 Since the Dart platform evolves over time, a package may only work with certain | |
| 160 versions of it.</p> | |
| 161 | |
| 162 <p>A package can specify that using an <em>SDK constraint</em>. This goes inside
a | |
| 163 separate top-level “environment” field in the pubspec and uses the s
ame | |
| 164 <a href="dependencies.html#version-constraints">version constraint</a> syntax as | |
| 165 dependencies. For example, this constraint says that this package works with any | |
| 166 Dart SDK from 0.3.4 or later:</p> | |
| 167 | |
| 168 <div class="highlight"><pre><code class="yaml"><span class="l-Scalar-Plain">envi
ronment</span><span class="p-Indicator">:</span> | |
| 169 <span class="l-Scalar-Plain">sdk</span><span class="p-Indicator">:</span> <spa
n class="s">">=0.3.4"</span> | |
| 170 </code></pre></div> | |
| 171 | |
| 172 <p>Pub will try to find the latest version of a package whose SDK constraint wor
ks | |
| 173 with the version of the Dart SDK that you have installed.</p> | |
| 174 | |
| OLD | NEW |