All Projects → gdotdesign → Elm Github Install

gdotdesign / Elm Github Install

Licence: mit
An alternative decentralized package manager for Elm

Programming Languages

ruby
36898 projects - #4 most used programming language
elm
856 projects

Projects that are alternatives of or similar to Elm Github Install

Ied
📦 Like npm, but faster - an alternative package manager for Node
Stars: ✭ 1,973 (+867.16%)
Mutual labels:  package-manager
Docker
Composer in Docker
Stars: ✭ 180 (-11.76%)
Mutual labels:  package-manager
Awesome Scoop
A collection of awesome resources for the scoop package manager for windows
Stars: ✭ 197 (-3.43%)
Mutual labels:  package-manager
Lit
Toolkit for developing, sharing, and running luvit/lua programs and libraries.
Stars: ✭ 167 (-18.14%)
Mutual labels:  package-manager
Luarocks
LuaRocks is the package manager for the Lua programming language.
Stars: ✭ 2,324 (+1039.22%)
Mutual labels:  package-manager
Tink
a dependency unwinder for javascript
Stars: ✭ 2,176 (+966.67%)
Mutual labels:  package-manager
Pearl
Pearl is a lightweight package manager for automating reproducible environments between different systems (Linux and OSX). It can be used for dotfiles, plugins, programs and any form of code accessible via git.
Stars: ✭ 166 (-18.63%)
Mutual labels:  package-manager
Habitat
Modern applications with built-in automation
Stars: ✭ 2,334 (+1044.12%)
Mutual labels:  package-manager
Ni
💡 Use the right package manager
Stars: ✭ 179 (-12.25%)
Mutual labels:  package-manager
Dds
A C++ tool for a new decade
Stars: ✭ 194 (-4.9%)
Mutual labels:  package-manager
Spack
A flexible package manager that supports multiple versions, configurations, platforms, and compilers.
Stars: ✭ 2,425 (+1088.73%)
Mutual labels:  package-manager
Elba
A package manager for Idris
Stars: ✭ 173 (-15.2%)
Mutual labels:  package-manager
Boss
Dependency Manager for Delphi
Stars: ✭ 188 (-7.84%)
Mutual labels:  package-manager
Bolt
⚡️ Super-powered JavaScript project management
Stars: ✭ 2,134 (+946.08%)
Mutual labels:  package-manager
Hatch
A modern project, package, and virtual env manager for Python
Stars: ✭ 2,268 (+1011.76%)
Mutual labels:  package-manager
Zef
Raku / Perl6 Module Management
Stars: ✭ 166 (-18.63%)
Mutual labels:  package-manager
Fpm
Fortran Package Manager (fpm)
Stars: ✭ 184 (-9.8%)
Mutual labels:  package-manager
Dcos
DC/OS - The Datacenter Operating System
Stars: ✭ 2,316 (+1035.29%)
Mutual labels:  package-manager
Ansible Role Homebrew
Ansible Role - Homebrew
Stars: ✭ 195 (-4.41%)
Mutual labels:  package-manager
Ipmjs
Immutable Package Manager
Stars: ✭ 191 (-6.37%)
Mutual labels:  package-manager

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: https://github.com/gdotdesign/elm-github-install/issues/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://[[email protected]]host.xz[:port]/path/to/repo.git/
  • git://host.xz[:port]/path/to/repo.git/
  • http[s]://host.xz[:port]/path/to/repo.git/
  • [[email protected]]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).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].