Index: app/views/doc/package-layout.html |
diff --git a/app/views/doc/package-layout.html b/app/views/doc/package-layout.html |
deleted file mode 100644 |
index 2530ffeaa1fcc8d524945654688fac56eb22524c..0000000000000000000000000000000000000000 |
--- a/app/views/doc/package-layout.html |
+++ /dev/null |
@@ -1,368 +0,0 @@ |
-<ol class="toc"> |
- <li><a href="#the-basics">The basics</a></li> |
- <li><a href="#readme">README</a></li> |
- <li><a href="#public-libraries">Public libraries</a></li> |
- <li><a href="#public-assets">Public assets</a></li> |
- <li><a href="#implementation-files">Implementation files</a></li> |
- <li><a href="#web-files">Web files</a></li> |
- <li><a href="#command-line-apps">Command-line apps</a></li> |
- <li><a href="#tests-and-benchmarks">Tests and benchmarks</a></li> |
- <li><a href="#documentation">Documentation</a></li> |
- <li><a href="#examples">Examples</a></li> |
- <li><a href="#internal-tools-and-scripts">Internal tools and scripts</a></li> |
-</ol> |
- |
-<p>Part of a healthy code ecosystem is consistent conventions. When we all do the |
-same thing the same way, it makes it easier for us to learn our way around |
-each other’s work. It also makes it easier to write tools that can automatically |
-do stuff for us.</p> |
- |
-<p>When you build a Pub package, we have a set of conventions we encourage you to |
-follow. They describe how you organize the files and directories within your |
-package, and how to name things. You don’t have to have every single thing |
-these guidelines specify. If your package doesn’t have binaries, it doesn’t |
-need a directory for them. But if it does, you’ll make everyone’s life easier |
-if you call it <code>bin</code>.</p> |
- |
-<p>To give you a picture of the whole enchilada, here’s what a complete package |
-(conveniently named <code>enchilada</code>) that uses every corner of these guidelines |
-would look like:</p> |
- |
-<pre><code>enchilada/ |
- pubspec.yaml |
- pubspec.lock * |
- README.md |
- LICENSE |
- asset/ |
- guacamole.css |
- benchmark/ |
- make_lunch.dart |
- packages/ ** |
- bin/ |
- enchilada |
- packages/ ** |
- doc/ |
- getting_started.md |
- example/ |
- lunch.dart |
- packages/ ** |
- lib/ |
- enchilada.dart |
- tortilla.dart |
- src/ |
- beans.dart |
- queso.dart |
- packages/ ** |
- test/ |
- enchilada_test.dart |
- tortilla_test.dart |
- packages/ ** |
- tool/ |
- generate_docs.dart |
- web/ |
- index.html |
- main.dart |
- style.css |
-</code></pre> |
- |
-<p>* The <code>pubspec.lock</code> will only be in source control if the package is an |
-<a href="glossary.html#application-package">application package</a>.</p> |
- |
-<p>** The <code>packages</code> directories will exist locally after you’re run |
-<code>pub get</code>, but won’t be checked into source control.</p> |
- |
-<h2 id="the-basics">The basics</h2> |
- |
-<pre><code>enchilada/ |
- pubspec.yaml |
- pubspec.lock |
-</code></pre> |
- |
-<div class="learn-more"> |
- <a href="/doc/pubspec.html"> |
- Learn more about pubspecs → |
- </a> |
-</div> |
- |
-<p>Every package will have a <a href="pubspec.html"><strong>pubspec</strong></a>, a file named |
-<code>pubspec.yaml</code>, in the root directory of the package. That’s what <em>makes</em> it a |
-package.</p> |
- |
-<p>Once you’ve run <a href="pub-get.html"><code>pub get</code></a> or <a href="pub-upgrade.html"><code>pub |
-upgrade</code></a> on the package, you will also have a <strong>lockfile</strong>, |
-named <code>pubspec.lock</code>. If your package is an <a href="glossary.html#application-package">application |
-package</a>, this will be checked into source |
-control. Otherwise, it won’t be.</p> |
- |
-<pre><code>enchilada/ |
- packages/ |
- ... |
-</code></pre> |
- |
-<p>Running pub will also generate a <code>packages</code> directory. You will <em>not</em> check |
-this into source control, and you won’t need to worry too much about its |
-contents. Consider it pub magic, but not scary magic.</p> |
- |
-<p>The open source community has a few other files that commonly appear at the top |
-level of a project: <code>LICENSE</code>, <code>AUTHORS</code>, etc. If you use any of those, they can |
-go in the top level of the package too.</p> |
- |
-<h2 id="readme">README</h2> |
- |
-<pre><code>enchilada/ |
- README.md |
-</code></pre> |
- |
-<p>One file that’s very common in open source is a README file that |
-describes the project. This is especially important in pub. When you upload |
-to <a href="/">pub.dartlang.org</a>, your README will be shown on the page for your |
-package. This is the perfect place to introduce people to your code.</p> |
- |
-<p>If your README ends in <code>.md</code>, <code>.markdown</code>, or <code>.mdown</code>, it will be parsed as |
-<a href="http://daringfireball.net/projects/markdown/">Markdown</a> so you can make it as fancy as you like.</p> |
- |
-<h2 id="public-libraries">Public libraries</h2> |
- |
-<pre><code>enchilada/ |
- lib/ |
- enchilada.dart |
- tortilla.dart |
-</code></pre> |
- |
-<p>Many packages are <a href="glossary.html#library-package"><em>library packages</em></a>: they |
-define Dart libraries that other packages can import and use. These public Dart |
-library files go inside a directory called <code>lib</code>.</p> |
- |
-<p>Most packages define a single library that users can import. In that case, |
-its name should usually be the same as the name of the package, like |
-<code>enchilada.dart</code> in the example here. But you can also define other libraries |
-with whatever names make sense for your package.</p> |
- |
-<p>When you do, users can import these libraries using the name of the package and |
-the library file, like so:</p> |
- |
-<div class="highlight"><pre><code class="dart"><span class="k">import</span> <span class="s2">"package:enchilada/enchilada.dart"</span><span class="p">;</span> |
-<span class="k">import</span> <span class="s2">"package:enchilada/tortilla.dart"</span><span class="p">;</span> |
-</code></pre></div> |
- |
-<p>If you feel the need to organize your public libraries, you can also create |
-subdirectories inside <code>lib</code>. If you do that, users will specify that path when |
-they import it. Say you have a file hierarchy like this:</p> |
- |
-<pre><code>enchilada/ |
- lib/ |
- some/ |
- path/ |
- olives.dart |
-</code></pre> |
- |
-<p>Users will import <code>olives.dart</code> like:</p> |
- |
-<div class="highlight"><pre><code class="dart"><span class="k">import</span> <span class="s2">"package:enchilada/some/path/olives.dart"</span><span class="p">;</span> |
-</code></pre></div> |
- |
-<p>Note that only <em>libraries</em> should be in <code>lib</code>. <em>Entrypoints</em>—Dart scripts |
-with a <code>main()</code> function—cannot go in <code>lib</code>. If you place a Dart script |
-inside <code>lib</code>, you will discover that any <code>package:</code> imports it contains don’t |
-resolve. Instead, your entrypoints should go in the appropriate |
-<a href="glossary.html#entrypoint-directory">entrypoint directory</a>.</p> |
- |
-<h2 id="public-assets">Public assets</h2> |
- |
-<pre><code>enchilada/ |
- asset/ |
- guacamole.css |
-</code></pre> |
- |
-<p>While most library packages exist to let you reuse Dart code, you can also |
-reuse other kinds of content. For example, a package for something like |
-<a href="http://getbootstrap.com/">Bootstrap</a> might include a number of CSS files for |
-consumers of the package to use.</p> |
- |
-<p>These go in a top-level directory named <code>asset</code>. You can put any kind of file |
-in there and organize it with subdirectories however you like. It’s effectively |
-a <code>lib</code> directory for stuff that isn’t Dart code.</p> |
- |
-<p>Users can reference another package’s assets using URLs that contain |
-<code>assets/<package>/<path></code> where <code><package></code> is the name of the package |
-containing the asset and <code><path></code> is the relative path to the asset within that |
-package’s <code>asset</code> directory.</p> |
- |
-<aside class="alert alert-warning"> |
- |
-<p>The mechanics of referencing assets are still being implemented. URLs that |
-contain <tt>assets/</tt> are handled by <a href="pub-serve.html"><tt>pub |
-serve</tt></a>.</p> |
- |
-<p>The <a href="pub-build.html"><tt>pub build</tt></a> command also copies |
-assets to an <tt>assets</tt> directory, but this will <em>only</em> be in the |
-root directory of the output, so you must make sure that your <tt>assets/</tt> |
-URL correctly resolves to that directory and not a subdirectory.</p> |
- |
-<p>We don't currently have a solution for referencing assets in command-line |
-Dart applications.</p> |
- |
-</aside> |
- |
-<p>Note that <code>assets</code> is plural in the URL. This is a bit like the split between |
-<code>lib</code> and <code>packages</code>. The former is the name of the <em>directory in the package</em>, |
-the latter is the <em>name you use to reference it</em>.</p> |
- |
-<p>For example, let’s say your package wanted to use enchilada’s <code>guacamole.css</code> |
-styles. In an HTML file in your package, you can add:</p> |
- |
-<div class="highlight"><pre><code class="html"><span class="nt"><link</span> <span class="na">href=</span><span class="s">"assets/enchilada/guacamole.css"</span> <span class="na">rel=</span><span class="s">"stylesheet"</span><span class="nt">></span> |
-</code></pre></div> |
- |
-<p>When you run your application using <a href="pub-serve.html"><code>pub serve</code></a>, or build it |
-to something deployable using <a href="pub-build.html"><code>pub build</code></a>, Pub will copy over |
-any referenced assets that your package depends on.</p> |
- |
-<h2 id="implementation-files">Implementation files</h2> |
- |
-<pre><code>enchilada/ |
- lib/ |
- src/ |
- beans.dart |
- queso.dart |
-</code></pre> |
- |
-<p>The libraries inside “lib” are publicly visible: other packages are free to |
-import them. But much of a package’s code is internal implementation libraries |
-that should only be imported and used by the package itself. Those go inside a |
-subdirectory of <code>lib</code> called <code>src</code>. You can create subdirectories in there if |
-it helps you organize things.</p> |
- |
-<p>You are free to import libraries that live in <code>lib/src</code> from within other Dart |
-code in the <em>same</em> package (like other libraries in <code>lib</code>, scripts in <code>bin</code>, and |
-tests) but you should never import from another package’s <code>lib/src</code> directory. |
-Those files are not part of the package’s public API, and they might change in |
-ways that could break your code.</p> |
- |
-<p>When you use libraries from within your own package, even stuff in <code>src</code>, you |
-can (and should) still use <code>"package:"</code> to import them. This is perfectly |
-legit:</p> |
- |
-<div class="highlight"><pre><code class="dart"><span class="k">import</span> <span class="s2">"package:enchilada/src/beans.dart"</span><span class="p">;</span> |
-</code></pre></div> |
- |
-<p>The name you use here (in this case <code>enchilada</code>) is the name you specify for |
-your package in its <a href="pubspec.html">pubspec</a>.</p> |
- |
-<h2 id="web-files">Web files</h2> |
- |
-<pre><code>enchilada/ |
- web/ |
- index.html |
- main.dart |
- style.css |
-</code></pre> |
- |
-<p>Dart is a web language, so many pub packages will be doing web stuff. That |
-means HTML, CSS, images, and, heck, probably even some JavaScript. All of that |
-goes into your package’s <code>web</code> directory. You’re free to organize the contents |
-of that to your heart’s content. Go crazy with subdirectories if that makes you |
-happy.</p> |
- |
-<p>Also, and this is important, any Dart web entrypoints (in other words, Dart |
-scripts that are referred to in a <code><script></code> tag) go under <code>web</code> and not <code>lib</code>. |
-That ensures that there is a nearby <code>packages</code> directory so that <code>package:</code> |
-imports can be resolved correctly.</p> |
- |
-<p>(You may be asking yourself, “Self, where should I put my web-based example |
-programs? <code>example</code> or <code>web</code>?” Put those in <code>example</code>.)</p> |
- |
-<h2 id="command-line-apps">Command-line apps</h2> |
- |
-<pre><code>enchilada/ |
- bin/ |
- enchilada |
-</code></pre> |
- |
-<p>Some packages define programs that can be run directly from the command line. |
-These can be shell scripts or any other scripting language, including Dart. |
-The <code>pub</code> application itself is one example: it’s a simple shell script that |
-invokes <code>pub.dart</code>.</p> |
- |
-<p>If your package defines stuff like this, put it in a directory named <code>bin</code>.</p> |
- |
-<aside class="alert alert-note"> |
- |
-At some point, pub will support automatically adding that directory to your |
-system path so that these scripts can be easily invoked. |
- |
-</aside> |
- |
-<h2 id="tests-and-benchmarks">Tests and benchmarks</h2> |
- |
-<pre><code>enchilada/ |
- test/ |
- enchilada_test.dart |
- tortilla_test.dart |
-</code></pre> |
- |
-<p>Every self-respecting package should have tests. With pub, the convention is |
-that these go in a <code>test</code> directory (or some directory inside it if you like) |
-and have <code>_test</code> at the end of their file names.</p> |
- |
-<p>Typically, these use the <a href="http://api.dartlang.org/unittest.html">unittest</a> |
-package but you can use whatever testing system that gets you excited.</p> |
- |
-<pre><code>enchilada/ |
- benchmark/ |
- make_lunch.dart |
-</code></pre> |
- |
-<p>Packages that have performance critical code may also include <em>benchmarks</em>. |
-These test the API not for correctness but for speed (or memory use, or maybe |
-other empirical metrics).</p> |
- |
-<h2 id="documentation">Documentation</h2> |
- |
-<pre><code>enchilada/ |
- doc/ |
- getting_started.md |
-</code></pre> |
- |
-<p>If you’ve got code and tests, the next piece you need to maximize your karma |
-is good documentation. That goes inside a directory named <code>doc</code>. We don’t |
-currently have any guidelines about format or organization within that. Use |
-whatever markup format you like and be happy that you’re actually writing docs.</p> |
- |
-<p>This directory should <em>not</em> just contain docs generated automatically from your |
-source code using |
-<a href="http://api.dartlang.org/docs/continuous/dartdoc.html">dartdoc</a>. Since that’s |
-pulled directly from the code already in the package, putting those docs in |
-here would be redundant. Instead, this is for tutorials, guides, and other |
-hand-authored documentation <em>in addition to</em> generated API references.</p> |
- |
-<h2 id="examples">Examples</h2> |
- |
-<pre><code>enchilada/ |
- example/ |
- lunch.dart |
-</code></pre> |
- |
-<p>At this point, you’re going for the brass ring. Code, tests, docs, what else |
-could your users want? Standalone example programs that use your package, of |
-course! Those go inside the <code>example</code> directory. If the examples are complex |
-and use multiple files, consider making a directory for each example. Otherwise, |
-you can place each one right inside <code>example</code>.</p> |
- |
-<p>This is an important place to consider using <code>package:</code> to import files from |
-your own package. That ensures the example code in your package looks exactly |
-like code outside of your package would look.</p> |
- |
-<h2 id="internal-tools-and-scripts">Internal tools and scripts</h2> |
- |
-<pre><code>enchilada/ |
- tool/ |
- generate_docs.dart |
-</code></pre> |
- |
-<p>Mature packages often have little helper scripts and programs that people |
-run while developing the package itself. Think things like test runners, |
-documentation generators, or other bits of automation.</p> |
- |
-<p>Unlike the scripts in <code>bin</code>, these are <em>not</em> for external users of the package. |
-If you have any of these, place them in a directory called <code>tool</code>.</p> |