zephyr alternatives and similar packages
Based on the "Development" category.
Alternatively, view zephyr alternatives based on common mentions on social networks and blogs.
-
haskell-lsp
Haskell library for the Microsoft Language Server Protocol -
structured-haskell-mode
Structured editing minor mode for Haskell in Emacs -
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
stgi
A user-centric visual STG implementation to help understand GHC/Haskell's execution model. -
criterion
A powerful but simple library for measuring the performance of Haskell code. -
inline-c
Write Haskell source files including C code inline. No FFI required. -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome! -
gi-atk
Generate Haskell bindings for GObject-Introspection capable libraries -
inline-java
Haskell/Java interop via inline Java code in Haskell modules. -
lambdabot-core
A friendly IRC bot and apprentice coder, written in Haskell. -
scion
OLD, DEPRECATED: Use this instead https://github.com/haskell/haskell-ide-engine
InfluxDB - Power Real-Time Data Analytics at Scale
Do you think we are missing an alternative of zephyr or a related project?
Popular Comparisons
README
zephyr
A tree-shaking tool for PureScript.
zephyr
takes root terms, finds all terms which are required to evaluate
them, and generates code just for them. This is done across all dependencies,
and can substantially reduce the size of PureScript bundles. zephyr
can also
evaluate some expressions (an experimental feature).
Installation
The simplest option is to download the latest release binary. You may also build from source (see "Build & Test" section below).
Usage
# compile your project
purs compile -g corefn bower_components/purescript-*/src/**/*.purs src/**/*.purs
# run `zephyr`
zephyr -f Main.main
then you can bundle with purs bundle
command:
purs bundle -o app.js -m Main dce-output/**/*.js
You can integrate it with other build tools, see below.
You can specify modules as entry points, which is the same as specifying all exported identifiers.
# include all identifiers from Data.Eq module
zephyr Data.Eq
# as above
zephyr module:Data.Eq
# include Data.Eq.Eq identifier of Data.Eq module
zephyr ident:Data.Eq.Eq
# include 'Data.Eq.eq' identifier
zephyr Data.Eq.eq
zephyr
reads corefn json representation from the output
directory, removes
non transitive dependencies of entry points and generates common js modules (or
corefn representation) to dce-output
directory.
Evaluation of literal expressions
Zephyr can evaluate some literal expressions.
import Config (isProduction)
a = if isProduction
then "api/prod/"
else "api/dev/"
will be transformed to
a = "api/prod/"
whenever isProduction
is true
. This allows to have different
development and production environments while still ship a minified code which
only contains production code. You may define isProduction
in a module under
a src-prod
directory and include it when compiling production code with pulp
build -I src-prod
and to have another copy for your development environment
under src-dev
where isProduction
is set to false
.
Integration with build tools
zephyr
can be integrated with
- pulp: use
pulp build -- -g corefn
to compile, andpulp browserify --skip-compile -o dce-output
to bundlezephyr
's output. - parcel
- spago. See
this
example. Use
spago build --purs-args '--codegen corefn,js'
to compile, usingspago bundle
is currently affected by issue.
Build & Test
cabal build exe:zephyr
To run tests
cabal run zephyr-test
C Libraries
The released binaries are dynamically linked against glibc
, so if your system is using musl
(like Alpine Linux in docker
) or another alternative C library, you will need to compile zephyr
from source using ghc
on that system.
Comments
The -f
switch is not 100% safe. Upon running, zephyr
will remove exports from
foreign modules that seems to be not used: are not used in PureScript code and
seem not to be used in the foreign module. If you simply assign to exports
using JavaScript dot notation then you will be fine, but if you use square
notation exports[var]
in a dynamic way (i.e. var is a true variable rather
than a string literal), then zephyr
might remove code that shouldn't be
removed.