• Stars
    star
    205
  • Rank 191,264 (Top 4 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An alternative decentralized package manager for Elm

elm-install

Gem Version Npm version Code Climate Test Coverage Inline docs Build Status


This only works with Elm 0.18 and has not been updated to work with Elm 0.19

In Elm 0.19 how native works has changed and also how packages are installed and resolved, because of this it might not be possible to install third party native packages ever.

For more information check this issue: #62


This gem/npm-package allows you to install Elm packages in a decentralized way from Git repositories, this allows:

  • installing of effect manager and native packages
  • installing forks of packages for testing or unreleased features
  • using packages from local directories
  • installing private packages using private git repositories
  • installing packages offline (packages are cached)

Installation

If you have ruby installed on your machine then you can install it directly from rubygems.org:

gem install elm_install

If you have node.js installed on your machine then you can install it directly from npm:

npm install elm-github-install -g

or with yarn:

yarn global add elm-github-install

If you are experiencing EACCES: permission denied errors during installation using NPM then you can try:

sudo npm i -g elm-github-install --unsafe-perm=true --allow-root

There are also dependency free versions available for every release in the releases page.

Basic Usage

Once installed elm-install can be used instead of elm-package as a replacement:

elm-package.json:

{
  ...
  "dependencies": {
    "elm-lang/core": "5.0.0 <= v < 6.0.0",
    "elm-lang/svg": "2.0.0 <= v < 3.0.0",
    "elm-lang/dom": "1.1.1 <= v < 2.0.0"
  }
  ...
}

Command:

$ elm-install

Resolving packages...
  โ–ถ Package: https://github.com/elm-lang/core not found in cache, cloning...
  โ–ถ Package: https://github.com/elm-lang/svg not found in cache, cloning...
  โ–ถ Package: https://github.com/elm-lang/html not found in cache, cloning...
  โ–ถ Package: https://github.com/elm-lang/virtual-dom not found in cache, cloning...
  โ–ถ Package: https://github.com/elm-lang/dom not found in cache, cloning...
Solving dependencies...
  โ— elm-lang/core - https://github.com/elm-lang/core (5.1.1)
  โ— elm-lang/svg - https://github.com/elm-lang/svg (2.0.0)
  โ— elm-lang/dom - https://github.com/elm-lang/dom (1.1.1)
  โ— elm-lang/html - https://github.com/elm-lang/html (2.0.0)
  โ— elm-lang/virtual-dom - https://github.com/elm-lang/virtual-dom (2.0.4)
Packages configured successfully!

Advanced Usage

Sources can be defined in the dependency-sources field in elm-package.json for any package defined in the dependencies field.

The source can be defined as:

  • an URL pointing to a Git repository:
    "elm-lang/core": "[email protected]:someuser/core"
    
  • a hash containing the URL and the reference (tag, commit hash, branch) to use:
    "gdotdesign/elm-install-test": {
      "url": "[email protected]:gdotdesign/elm-install-test",
      "ref": "master"
    }
    
  • an absolute or relative path to the package in your hard drive:
    "elm-lang/dom": "../elm-lang/dom"
    

If a reference or a path is defined then the version in the dependencies field is ignored and the version will be used from the elm-package.json at that source.

Examples:

  ...
  "dependencies": {
    "gdotdesign/elm-install-test": "1.0.0 <= v < 2.0.0",
    "elm-lang/core": "5.0.0 <= v < 6.0.0",
    "elm-lang/svg": "2.0.0 <= v < 3.0.0",
    "elm-lang/dom": "1.1.1 <= v < 2.0.0"
  },
  "dependency-sources": {
    "elm-lang/core": "[email protected]:someuser/core",
    "elm-lang/dom": "../elm-lang/dom",
    "gdotdesign/elm-install-test": {
      "url": "[email protected]:gdotdesign/elm-install-test",
      "ref": "master"
    }
  }
  ...

CLI

Help for the elm-install command:

NAME:

  elm-install

DESCRIPTION:

  Install Elm packages from Git repositories.

COMMANDS:

  help    Display global or [command] help documentation
  install Install Elm packages from the elm-package.json file.

GLOBAL OPTIONS:

  -h, --help
      Display help documentation

  -v, --version
      Display version information

  -t, --trace
      Display backtrace when an error occurs

Help for the elm-install install command.

NAME:

  install

SYNOPSIS:

  elm-install install

DESCRIPTION:

  Install Elm packages from the elm-package.json file.

OPTIONS:

  --cache-directory STRING
      Specifies where the cache is stored

  --skip-update
      Skips the update stage of packages

  --only-update STRING
      Only updates the given package

  --verbose

Known Issues

  • Using the NPM package or the released binaries in windows while specifing a relative directory as a package will fail because of the 2.2 travelling ruby dependency. Using the >Ruby 2.3 with the gem installed works properly. More #36

FAQ

Do I need to use SSH keys?

It depends on your use case, but for public repositories in Github or Bitbucket it's not needed.

What url protocols are supported?

The following protocols can be used:

  • ssh://[user@]host.xz[:port]/path/to/repo.git/
  • git://host.xz[:port]/path/to/repo.git/
  • http[s]://host.xz[:port]/path/to/repo.git/
  • [user@]host.xz:path/to/repo.git/

Can I install from private repositories?

Yes private repositories are supported provided you have authentication (for example SSH keys).

More Repositories

1

elm-ui

UI library for making web applications with Elm
Elm
921
star
2

cr-dotenv

Loads ".env" files
Crystal
94
star
3

elm-spec

End-to-end integration testing for Elm apps and components
JavaScript
55
star
4

elm-ui-examples

Examples applications for Elm-UI
Elm
32
star
5

elm-directory

Find and read documentation of Elm packages.
Ruby
17
star
6

elm-storage

Unified interface for accessing and modifying LocalStorage, SessionStorage and Cookies
Elm
13
star
7

cr-melon

Class based Http APIs in crystal
Crystal
12
star
8

elm-dev-env

Opinionated development environment for building Elm apps
JavaScript
12
star
9

elm-dom

Alternative Elm package for DOM manipulation.
Elm
11
star
10

elm-html-styles

Add CSS styles to your HTML!
Elm
8
star
11

quality-control

A Gem for running CI tasks like a boss.
Ruby
8
star
12

moosql

MooTools class wrapper for HTML 5 Sql storage
CoffeeScript
7
star
13

Rubik-s-Cube

Rubik's Cube Game in Three.js
CoffeeScript
5
star
14

cr-corm

SQL Statement Builder
Crystal
5
star
15

elm-ui-website

Website for Elm-UI
Elm
2
star
16

blender-gle

Blender Layout Engine for G.UI
CoffeeScript
2
star
17

coffer

Integrated Components
CoffeeScript
2
star
18

advent-of-code-2022

Advent of Code 2022 in Mint.
Mint
2
star
19

mui

MUI - Modern User Interfaces
CoffeeScript
2
star
20

diamond

Chrome / Node-Webkit App development environment
JavaScript
2
star
21

crystal

JavaScript library
JavaScript
2
star
22

fron-acr

Ruby
1
star
23

global-actions-example

Elm
1
star
24

shards

Repository for client side JavaScript libraries.
Ruby
1
star
25

elm-html

Elm
1
star
26

worm

virtual Object-relational mapping
CoffeeScript
1
star
27

nodesass

Sass compiler for node.js
CoffeeScript
1
star
28

Lattice

A JavaScript User Interface Library with the power of MooTools.
CoffeeScript
1
star
29

stash

Object based initialization
JavaScript
1
star
30

moxy-demos

JavaScript
1
star
31

cr-dkim

Crystal
1
star
32

cr-quickjs

Crystal
1
star
33

Coffee-Store

Simple Key - Value storage interface for local storage implementations.
JavaScript
1
star
34

rennee-extras

Some extra methods and stuff for Renee.
1
star
35

Moosic

A simple HTML5 audio player with the power of MooTools.
JavaScript
1
star