<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ilias Van Peer</title>
    <description>The latest articles on DEV Community by Ilias Van Peer (@zwilias).</description>
    <link>https://dev.to/zwilias</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F36241%2F95b0e071-a95f-4e7c-8e90-b61e7189222b.png</url>
      <title>DEV Community: Ilias Van Peer</title>
      <link>https://dev.to/zwilias</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zwilias"/>
    <language>en</language>
    <item>
      <title>Elm tools</title>
      <dc:creator>Ilias Van Peer</dc:creator>
      <pubDate>Sun, 03 Feb 2019 10:52:40 +0000</pubDate>
      <link>https://dev.to/zwilias/elm-tools-571a</link>
      <guid>https://dev.to/zwilias/elm-tools-571a</guid>
      <description>&lt;p&gt;Elm, besides being an awesome language with a nice ecosystem of packages, also has an incredible ecosystem of tools. In this post, I list a few of my favourite ones and quite shamelessly plug a few of my own.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/avh4/elm-format/blob/master/README.md"&gt;&lt;code&gt;elm-format&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-format&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One of the best known tools in the Elm ecosystem, this one needs no introduction.&lt;/p&gt;

&lt;p&gt;A quick overview:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;zero-config formatting of all your Elm code&lt;/li&gt;
&lt;li&gt;integrations with popular editors&lt;/li&gt;
&lt;li&gt;can be used in CI using the &lt;code&gt;--validate&lt;/code&gt; flag&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/elm-explorations/test/blob/master/Readme.md"&gt;&lt;code&gt;elm-test&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-test&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;elm-test&lt;/code&gt; is your one-stop shop for testing Elm code. Useful for plain old unit tests, property-based tests using &lt;a href="https://package.elm-lang.org/packages/elm-explorations/test/latest/Fuzz"&gt;fuzz tests&lt;/a&gt;, as well as inspecting generated HTML using &lt;a href="https://package.elm-lang.org/packages/elm-explorations/test/latest/Test-Html-Query"&gt;&lt;code&gt;Test.Html.Query&lt;/code&gt;&lt;/a&gt; in combination with some selectors, it enables some really powerful testing scenario's.&lt;/p&gt;

&lt;p&gt;The de-facto way of using &lt;code&gt;elm-test&lt;/code&gt; is through the node-based test-runner.&lt;/p&gt;

&lt;p&gt;Noteworthy: it's supported on &lt;a href="https://blog.travis-ci.com/2018-11-20-elm-is-now-supported-on-travis-ci"&gt;travis&lt;/a&gt;, too!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/stoeffel/elm-verify-examples/blob/master/Readme.md"&gt;&lt;code&gt;elm-verify-examples&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-verify-examples&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Incredibly useful when writing documentation for your packages, &lt;code&gt;elm-verify-examples&lt;/code&gt; allows running your examples and verifying their correctness.&lt;/p&gt;

&lt;p&gt;If you're publishing packages, this should be part of your CI setup!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/dmy/elm-doc-preview/blob/master/README.md"&gt;&lt;code&gt;elm-doc-preview&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-doc-preview&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Writing documentation for a package is so much easier when there is a nice way to preview what it will actually look like. And that's where &lt;code&gt;elm-doc-preview&lt;/code&gt; comes in!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;elm-doc-preview&lt;/code&gt; can be used locally, but also exists as a hosted version that can  preview docs for GitHub repositories, as long as a &lt;code&gt;README.md&lt;/code&gt; and &lt;code&gt;docs.json&lt;/code&gt; are committed.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/zwilias/elm-doc"&gt;&lt;code&gt;elm-doc&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-doc&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Along the same lines, but geared towards writing applications, &lt;code&gt;elm-doc&lt;/code&gt; allows viewing the docs of all of your dependencies in one single location, fully offline.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: I made this&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/stil4m/elm-analyse/blob/master/README.md"&gt;&lt;code&gt;elm-analyse&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-analyse&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;elm-analyse&lt;/code&gt; analyses your Elm code and can help identify a bunch of (potential) issues, while also allowing quick-fixes for a bunch of best practices. Very cool tool!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/zwilias/elm-xref/blob/master/README.md"&gt;&lt;code&gt;elm-xref&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npm i elm-xref&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Inspired by Erlang/OTP's &lt;a href="https://dev.toXref"&gt;http://erlang.org/doc/apps/tools/xref_chapter.html&lt;/a&gt;, &lt;code&gt;elm-xref&lt;/code&gt; is a cross-referencing tool.&lt;/p&gt;

&lt;p&gt;This essentially means that it can do static analysis of your codebase and identify unused functions (both private and exposed), or look for all the places a given function is used.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: I also made this&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.markuslaire.com/github/elm-dependencies-analyzer/"&gt;&lt;code&gt;elm-dependencies-analyzer&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;An online tool that analyses your elm.json, and can tell you which of your dependencies have updates available, shows your potential incompatibilities between the available versions of your dependencies, and so on.&lt;/p&gt;

&lt;p&gt;If you've ever wondered why you can't update &lt;code&gt;elm/http&lt;/code&gt;, this tool can tell you why!&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/dillonkearns/elm-graphql/blob/master/README.md"&gt;&lt;code&gt;@dillonkearns/elm-graphql&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;If you're using GraphQL with Elm (or want to use GraphQL with Elm), this package/tool combination allows generating a type-safe interface to your GraphQL backend based on the schema.&lt;/p&gt;

&lt;p&gt;Great docs, very well thought-out API, and overall an absolute joy to work with!&lt;/p&gt;




&lt;p&gt;Did I miss any of the tools you love to use? Feel free to point out in comments!&lt;/p&gt;

</description>
      <category>elm</category>
      <category>tools</category>
    </item>
    <item>
      <title>The `elm-package.json` file</title>
      <dc:creator>Ilias Van Peer</dc:creator>
      <pubDate>Thu, 28 Dec 2017 09:20:45 +0000</pubDate>
      <link>https://dev.to/zwilias/the-elm-packagejson-file-119e</link>
      <guid>https://dev.to/zwilias/the-elm-packagejson-file-119e</guid>
      <description>&lt;p&gt;The &lt;code&gt;elm-package.json&lt;/code&gt; file contains metadata about your application or package. The Elm platform uses it to compile your code and distribute it as a package.&lt;/p&gt;

&lt;p&gt;To create a basic &lt;code&gt;elm-package.json&lt;/code&gt; file, you can execute &lt;code&gt;elm-package install&lt;/code&gt; or &lt;code&gt;elm-make&lt;/code&gt;. This will set up a simple project and download the default dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"helpful summary of your project, less than 80 characters"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"repository"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://github.com/user/project.git"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BSD3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"source-directories"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"exposed-modules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"elm-lang/core"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"5.1.1 &amp;lt;= v &amp;lt; 6.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"elm-lang/html"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0.0 &amp;lt;= v &amp;lt; 3.0.0"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"elm-version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.18.0 &amp;lt;= v &amp;lt; 0.19.0"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Relevant for applications&lt;/th&gt;
&lt;th&gt;Relevant for packages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;summary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;repository&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;license&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;source-directories&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;exposed-modules&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dependencies&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;elm-version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: All properties are required, even if not marked above as relevant. Properties not relevant to your project are best left with their default values intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;version&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no need to ever touch this for applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;version&lt;/code&gt; property defines the &lt;a href="https://semver.org/"&gt;semantic version&lt;/a&gt; of the public API of your package.&lt;/p&gt;

&lt;p&gt;Only stable packages can be published to &lt;a href="http://package.elm-lang.org/"&gt;http://package.elm-lang.org/&lt;/a&gt;. As such, version numbers start at 1.0.0.&lt;/p&gt;

&lt;p&gt;There is generally no need to &lt;em&gt;manually&lt;/em&gt; modify this value. Instead, when you are ready to publish a &lt;em&gt;new&lt;/em&gt; version, use &lt;code&gt;elm-package bump&lt;/code&gt; which will compare your API to the previously uploaded version and decide on the correct new version number to apply.&lt;/p&gt;

&lt;p&gt;Before a version can be published with &lt;code&gt;elm-package publish&lt;/code&gt;, it need to be tagged and the tag must be published. Using &lt;code&gt;elm-package publish&lt;/code&gt; before doing so will give you specific instructions on how to tag and push that tag.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;summary&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no need to ever touch this for applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;80 character (max) description of your package.&lt;/p&gt;

&lt;p&gt;This is the description that shows up on the package listing at &lt;a href=""&gt;http://package.elm-lang.org&lt;/a&gt;. In order for people to be able to find your package, it's a good idea to use relevant keywords in here.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;repository&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no need to ever touch this for applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For packages, this should be the git repository, accessible over https, as hosted on GitHub. You will only want to change the &lt;code&gt;user/project&lt;/code&gt; part of the URL, and leave the &lt;code&gt;https://github.com/&lt;/code&gt; prefix and &lt;code&gt;.git&lt;/code&gt; suffix intact.&lt;/p&gt;

&lt;p&gt;Note that this entry is &lt;strong&gt;case sensitive&lt;/strong&gt;. If you do not use the exact same casing here as your actual GitHub username or GitHub repository, installation will not function correctly.&lt;/p&gt;

&lt;p&gt;You'll generally want to refrain from using any "special" characters here. Using dots in the username or project, for example, will break the compiled code.&lt;/p&gt;

&lt;p&gt;Unless your GitHub username is Elm-specific (for example &lt;code&gt;elm-lang&lt;/code&gt;), it's generally a good idea to prefix the package name with &lt;code&gt;elm-&lt;/code&gt;. This makes it easier for people to discover your package on GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;license&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no need to ever touch this for applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;License under which you release this code. Note that most licenses also require a LICENSE file to be included in your repository as well as a copyright notice in your README in order to actually be valid.&lt;/p&gt;

&lt;p&gt;Using the license generator on GitHub makes this a fairly painless process.&lt;/p&gt;

&lt;p&gt;At the moment, this field is not restricted. However, it is recommended to use a proper &lt;a href="https://spdx.org/licenses/"&gt;SPDX license identifier&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;source-directories&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;source-directories&lt;/code&gt; property gives a list of (relative) paths where the Elm compiler will look for modules referenced in your code.&lt;/p&gt;

&lt;p&gt;Typically, this will look like &lt;code&gt;["src"]&lt;/code&gt; if your sources live in the &lt;code&gt;src&lt;/code&gt; directory, relative to the location of &lt;code&gt;elm-package.json&lt;/code&gt;. In the case of the &lt;code&gt;elm-package.json&lt;/code&gt; for &lt;code&gt;elm-test&lt;/code&gt;, there would typically be a corresponding &lt;code&gt;[".", "../src"]&lt;/code&gt; entry (the first is where you tests are, the second is where the code under test is).&lt;/p&gt;

&lt;p&gt;Note that there is a direct mapping of filepaths to module names in Elm. For example, given a &lt;code&gt;"source-directories": ["src"]&lt;/code&gt;, the module &lt;code&gt;Foo.Bar.Baz&lt;/code&gt; should live at &lt;code&gt;src/Foo/Bar/Baz.elm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On Mac OS X, the filesystem is case aware, but not case sensitive. What this means is that during development, you can probably get away with naming the above file &lt;code&gt;src/fOO/bAR/bAZ.elm&lt;/code&gt;. However, people using your packages may be using case sensitive filesystems, so your package will not work for them.&lt;/p&gt;

&lt;p&gt;As such, please use the exact same case for the path as for the module names.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;exposed-modules&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;There is no need to ever touch this for applications.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;exposed-modules&lt;/code&gt; property indicates which modules from your package are exposed. Modules added to this list will be shown on &lt;a href="http://package.elm-lang.org"&gt;http://package.elm-lang.org&lt;/a&gt; and, when a user installs your package as a dependency, the exposed modules will be available to &lt;code&gt;import&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When a module is added to the &lt;code&gt;exposed-modules&lt;/code&gt; property, &lt;code&gt;elm-make&lt;/code&gt; will enable an extra set of checks for those modules to ensure that all exposed variables are properly documented. You can read a bit more on the exact format for documentation on &lt;a href="http://package.elm-lang.org/help/documentation-format"&gt;package.elm-lang.org/help/documentation-format&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;dependencies&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is probably the most important property for applications. It consists of a map of each dependency's name (identified by its author's name combined with a package name) to a range of semantic versions. The general syntax is &lt;code&gt;&amp;lt;minimal&amp;gt; &amp;lt;= v &amp;lt; &amp;lt;maximal&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For applications, it's generally a good idea to limit ranges or even pin them to specific versions (&lt;code&gt;1.2.3 &amp;lt;= v &amp;lt; 1.2.4&lt;/code&gt; would only allow version 1.2.3, for example). This prevents you from accidentally relying on behaviour that may change. To be extra-safe, one can also add transient dependencies here and pin those, too. That way, &lt;code&gt;elm-package.json&lt;/code&gt; can double as a lock-file.&lt;/p&gt;

&lt;p&gt;For libraries, it's recommended to use broad ranges (to minimize the risk of running into dependency conflicts) while also limiting the number of dependencies. For example, if you only need a single function from some package, it may be better to replicate that function rather than pull that package in as a dependency, and making consumers of your package depend upon it as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;elm-version&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is a semantic version range specifying the version(s) of Elm your package is compatible with. You'll probably want to leave it set to its default value, unless upgrading a package from an older version of Elm to 0.18.&lt;/p&gt;

</description>
      <category>elm</category>
    </item>
  </channel>
</rss>
