GithubHelp home page GithubHelp logo

lix.client's Introduction

Gitter

lix - the haxe package manager that rox ... ba-dum-tss ...

In a nutshell, lix is an attempt to get dependency management right, building on lessons learnt from looking at NPM, Cargo and failure to move haxelib forward. The core proposition of lix is that dependencies should be fully locked down and versioned, so that every state can be reliably replicated.

To track dependencies, lix leverages haxeshim. This means that for each dependency, there is a <libName>.hxml in the project's haxe_libraries folder. In addition to putting all required compiler arguments into a library's hxml, lix also leaves behind installation instructions that allow to redownload the exact same version on another machine. If you check out any particular state of a project, then lix download will download any missing library versions.

Installing Lix

You will require haxeshim for lix to function. Because on its own haxeshim cannot compile haxe code, it is advisable to use switchx.

A simple setup using npm:

npm i haxeshim -g
npm i switchx -g
switchx install latest
npm i lix.pm -g

When installing haxeshim on Windows, please make sure that no haxe processes are currently running. When installing on other platforms, please make sure that the haxe command installed by haxeshim has precedence over other commands you may have installed.

Local installation

It is possible to install the whole stack through npm without -g - just keep in mind that you will have to invoke haxe through npm then.

Scoping

The scope for versioning is based on the location of the .haxerc file that is used by haxeshim. Use switchx scope create to create a new scope.

Downloading and Installing Libraries

Currently, you can download and install libraries from urls, with the following schemes:

  • http:<url> or https:<url> - will get the library from an arbitrary URL ... you MUST BE reasonably sure that the targeted resource NEVER changes.
  • haxelib:<name>[#<version>] - will get the library from haxelib, either the specific version or the latest
  • github:<owner>/<repo>[#<brach|tag|sha>] - will get the library from GitHub
  • gh:... an alias for github
  • gitlab:<owner>/<repo>[#<brach|tag|sha>] - will get the library from GitLab

Note that for github and gitlab you can specify credentials using the --gh-credentials and --gl-private-token parameters respectively. Be warned though that these credentials are then baked into the hxmls as well. Be very careful about using this option.

Aliasing

You can always download a library under a different name and version, example:

lix install gh:lix-pm/lix as othername#1.2.3

You will find the following othername.hxml in your haxe_libraries:

lix download github:lix-pm/lix#9f16f8c0f73262b076f1b5d7b41e514ebfc24fa9 into lix/github/9f16f8c0f73262b076f1b5d7b41e514ebfc24fa9
-D othername=1.2.3
-cp ${HAXESHIM_LIBCACHE}/lix/github/9f16f8c0f73262b076f1b5d7b41e514ebfc24fa9/src

lix.client's People

Contributors

back2dos avatar kevinresol avatar benmerckx avatar

Watchers

Jason O'Neil avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.