$30 off During Our Annual Pro Sale. View Details »

How I learned to stop worrying and love Hex.pm

Darian Moody
February 24, 2016

How I learned to stop worrying and love Hex.pm

Publishing a package in the Elixir ecosystem is simple and this talk is designed to showcase that - to rid you of any worry that packaging your project will be a time sink.

It covers:

* What is Hex.pm?
* The minimum steps required to make an Elixir package ready
* The publishing step
* Generating docs with ex_doc and pushing them to Hexdocs
* Some extra Hex, docs & packaging related tips

Darian Moody

February 24, 2016
Tweet

More Decks by Darian Moody

Other Decks in Programming

Transcript

  1. HOW I
    LEARNED
    TO STOP
    WORRYING
    AND LOVE...
    HEX.PM

    View Slide

  2. Darian Moody
    @djm_

    View Slide

  3. @djm_
    Why am I
    here?
    ..Totally got this one.

    View Slide

  4. @djm_
    HEX.PM
    PUBLISH TO

    View Slide

  5. @djm_
    My aim?

    View Slide

  6. @djm_
    Have you
    published
    to Hex?

    View Slide

  7. @djm_
    Why worry?
    ..you big baby!

    View Slide

  8. @djm_

    View Slide

  9. @djm_
    distutils
    setuptools
    distribute
    distutils2
    bento
    virtualenv
    setup.py
    MANIFEST.in
    setup.cfg
    requirements.txt
    easy_install
    pip

    View Slide

  10. @djm_

    View Slide

  11. @djm_
    Elixir has
    nuked these
    problems
    ..dead as a dodo.

    View Slide

  12. @djm_
    How?
    • Project structure
    • Tooling there from the start
    • Project level deps (PDM)

    View Slide

  13. @djm_
    i. Hex Ready
    ii. Push to Hex
    iii.Hexdocs
    THE
    MASTERPLAN

    View Slide

  14. @djm_
    $ mix new project_name
    SCRATCH
    STARTING FROM

    View Slide

  15. @djm_
    $ mix hex.build

    View Slide

  16. @djm_
    /mix.exs

    View Slide

  17. @djm_
    Add a
    description
    /mix.exs

    View Slide

  18. @djm_
    /mix.exs
    Add
    package
    meta

    View Slide

  19. @djm_
    /mix.exs
    Files
    included
    by default

    View Slide

  20. @djm_
    $ mix hex.build

    View Slide

  21. @djm_
    i. Fit for Hex
    ii. Push to Hex
    iii.Hexdocs
    THE
    MASTERPLAN

    View Slide

  22. @djm_
    PUBLISH
    BEFORE WE

    View Slide

  23. @djm_
    $ mix hex.user register

    View Slide

  24. @djm_
    $ mix hex.publish

    View Slide

  25. @djm_
    i. Fit for Hex
    ii. Push to Hex
    iii.Hexdocs
    THE
    MASTERPLAN

    View Slide

  26. @djm_
    HEXDOCS
    PUSHING TO

    View Slide

  27. @djm_
    NEUTRAL
    DOC PACKAGE
    • Implement `mix docs`
    • Generate HTML into /doc
    • Generate an index.html
    Must:

    View Slide

  28. @djm_
    ex_doc

    View Slide

  29. @djm_
    /mix.exs
    Add
    exdoc
    deps

    View Slide

  30. @djm_
    DOCS
    ADD SOME
    They look like this:

    View Slide

  31. @djm_
    $ mix deps.get
    DOCS
    GENERATE THE
    $ mix docs

    View Slide

  32. @djm_
    # OSX
    $ open doc/index.html
    # Linux
    $ xdc-open doc/index.html

    View Slide

  33. @djm_
    PUBLISH
    LET'S
    $ mix hex.docs

    View Slide

  34. @djm_
    i. Fit for Hex
    ii. Push to Hex
    iii.Hexdocs
    THE
    MASTERPLAN

    View Slide

  35. @djm_
    TIPS
    SOME HANDY

    View Slide

  36. @djm_
    $ mix hex.config cdn_url
    EU > Ireland
    Asia > Singapore
    FASTER HEX

    View Slide

  37. @djm_
    UMBRELLA
    USE AN

    View Slide

  38. @djm_
    DOCS CAN HAVE A
    LOGO & PAGES

    View Slide

  39. @djm_

    View Slide

  40. Darian Moody
    @djm_
    Questions?

    View Slide