Détail du package

pulp

purescript-contrib1.4kLGPL-3.0+16.0.2

A build system for PureScript projects

purescript, make, build, cabal

readme

Travis CI status AppVeyor CI status Pulp

Join the chat at https://gitter.im/bodil/pulp

A build tool for PureScript.

Jarvis Cocker dancing

Installation

Assuming you already have Node set up (and we recommend you also set up NPM to keep your global packages in your home directory), all you need to do to get a working PureScript environment is:

$ npm install -g purescript pulp bower

This installs the PureScript compiler, the Pulp build tool, and the Bower package manager.

Aside: if you're familiar with the JavaScript ecosystem and you're wondering why PureScript uses Bower and not npm, you might be interested to read Why the PureScript community uses Bower. Otherwise, please ignore this and read on.

Getting Started with a Pulp Project

The short version:

$ mkdir purescript-hello
$ cd purescript-hello
$ pulp init
$ pulp run

The structure of your project folder, after running pulp init, will look like this:

  purescript-hello
  - bower.json
  - src/
  - test/

pulp works by convention. It expects all projects to contain a manifest file for package management (usually bower.json, since package management in PureScript is usually handled by Bower).

Your project source files go in the src folder. Your test files go in the test folder. Project dependencies will be installed under the Bower standard bower_components folder, and are expected to have the same basic src/test structure. That's all there is to a pulp project.

We employ the purescript- prefix as a convention to identify PureScript projects when they're used as dependencies. You're welcome to call your project anything you like, but without the purescript- prefix it won't be picked up by pulp as a dependency.

What if I need something a bit more complicated?

If you want to change any of these defaults, you can—pulp offers a number of command line flags to alter its behaviour—but try to avoid using them unless you have a good reason to.

If you get fed up with having to remember long pulp invocations, try using npm as your build tool. pulp's numerous command line flags make it well suited for this.

If that's still not enough, you might try using a more generic build tool, such as webpack with purs-loader, or gulp with gulp-purescript.

Pulp Commands

To get a quick overview of the things pulp can do, you can ask it to give you a list of its available commands:

$ pulp --help

This will print a list of pulp's global command line options, and a list of commands it will accept.

To see the available options for a specific command, you can invoke the command with the --help flag, like this:

$ pulp build --help

This will give you an exhaustive list of ways you can modify the basic behaviour of the command.

Global, Command Specific and Pass-Through Options

Notice that there's a distinction between global command line options and command specific options. Global options must appear before the name of the command, and command specific options must appear after it.

Thus, if you want to run the build command in watch mode (where it will run the command once, then wait and re-run the command whenever you change a source file) you need to put the --watch flag before the command itself, like so:

$ pulp --watch build

On the other hand, if you want to tell the build command to produce optimised code (performing dead code elimination), using the command specific option --optimise, the flag needs to come after the command name:

$ pulp build --optimise

Pass-Through Options

Finally, pulp commands sometimes allows you to pass flags through to the purs compiler. Any options appearing after -- will be passed through to the compiler, or whichever process a pulp command spawns. For instance, if you want to tell purs to skip applying tail call optimisations, you would invoke pulp build like this:

$ pulp build -- --no-tco

Building Projects

At heart, pulp is just a frontend for the PureScript compiler, purs. Its basic function is to compile your project, which you can do by running pulp build. This will simply run purs compile with all your source files, leaving the compiled JavaScript files in the output folder. These files will all be CommonJS modules, which you can require() using anything which supports CommonJS, such as node.

However, you will usually want to do more with your project than just compile your PureScript code into a jumble of CommonJS modules. pulp provides a number of commands and options for the most common use cases.

Making a JavaScript Bundle

pulp build can also call purs bundle for you, which is a compiler tool whose job it is to take the output from purs compile, remove the code which isn't actually being used by your program, and bundle it all up into a single compact JavaScript file.

There are two command line options you can give pulp build to accomplish this, depending on where you want the resulting code. You can use the --optimise flag (or its shorthand alias, -O), which will send the bundled result to standard output, or you can use the --to (or -t) option, passing it a file name, and pulp will store the bundle in a file of that name.

So, you can use either of these methods, which in this example will both have the same effect:

$ pulp build --optimise > hello.js
$ pulp build --to hello.js

Note that using both options (pulp build --optimise --to hello.js) is superfluous. The presence of --to implies the presence of --optimise.

Running Your PureScript Project

If you're developing a Node project using PureScript, you can tell pulp to run it after compiling using the pulp run command. This command will first run pulp build for you, if necessary, then launch your compiled code using node. If you have used any pass-through command line options, these will be passed to the node process.

So, to run the hello world project you get from pulp init, you would simply:

$ pulp run

If you want to pass command line arguments to your application, pulp lets you do that too:

$ pulp run -- file1.txt file2.txt file3.txt

If you want to run your application using something other than node, pulp lets you do that too, with the --runtime option. For instance, if you've written an application which runs on PhantomJS, you might launch it like this:

$ pulp run --runtime phantomjs

Running Test Suites

pulp has a command pulp test, which works much like pulp run, except it will also compile the code you've placed in your test folder, and instead of running the main function in your Main module, it will use Test.Main. This module should be located in your test folder.

pulp doesn't care what test framework you've chosen, as long as there's a main function in your Test.Main module to be run. If the process exits with a non-zero return code, that means your test suite failed, as far as pulp is concerned, and it will itself exit with an error.

In short, to run your tests:

$ pulp test

To continuously run your tests when you change the source code:

$ pulp --watch test

Running Commands Before and After an Action

It's sometimes useful to kick off a command before or after an action, particularly in combination with the --watch option above. To do this, you can use --before, or --then and --else for successful or failing actions respectively:

$ pulp --watch --before clear build       # Clears the screen before builds.
$ pulp --watch --then 'say Done' build    # On OS X, announces 'Done' after a successful build.
$ pulp --watch --else 'say Failed' build  # Announces 'Failed' if a build failed.

# A more long-winded example combining the three:
$ pulp --watch --before clear --then "say $(basename `pwd`) succeeded." --else 'say $(basename `pwd`) failed.' build

CommonJS Aware Builds

Often, you'll want to go outside PureScript and leverage some of the enormous body of JavaScript code available on NPM. This is such a common use case that pulp provides a command for it: pulp browserify. As the name suggests, this uses Browserify to bundle up your PureScript code with Node style CommonJS dependencies.

For instance, the majority of web UI libraries for PureScript these days depend on either virtual-dom or React as a CommonJS dependency. Here is how you would add React to your project and build a JS bundle with React included (assuming your PureScript code requires it):

$ npm install react
$ pulp browserify --to hello.js

Essentially, pulp browserify --to works exactly like pulp build --to, except it also resolves CommonJS dependencies and includes them in the bundle. The resulting JS file can now be loaded directly into the browser, and everything you need to run your application should be included.

If you omit the --to option, the bundle is piped to standard output. This would thus have the same effect as the example above:

$ pulp browserify > hello.js

Optimising Code Size

pulp browserify will pull code in at the module level by default, so every file required from your entry point will appear in the bundle. The PureScript compiler, as we know, is able to perform dead code elimination on your compiled PureScript code, and we can leverage this in pulp browserify using the --optimise flag.

$ pulp browserify --optimise --to hello.js

Note that, unlike pulp build, --to doesn't automatically imply --optimise. In fact, if you omit --optimise, pulp browserify will not only omit the dead code elimination step, it will also run Browserify as an incremental build, which means it will run considerably faster. You should use --optimise only when you're building production code—when you're developing, you'll probably prefer the much faster compile times provided by Browserify's incremental mode.

Reimporting Browserified Bundles

While browserified bundles are intended to be consumed directly by browsers, you may sometimes prefer to access the bundle from some external code. While it's generally preferable to consume CommonJS modules directly, there are use cases where you might want to provide a single JS file ready to be required by a consumer without needing to deal with installing and resolving dependencies. Browserify provides the --standalone mechanism for that, and pulp browserify supports it:

$ pulp browserify --standalone myBundle --to myBundle.js

This makes a bundle which comes wrapped in a UMD header (meaning it supports both CommonJS and AMD, and will install itself in the global namespace under the name you provided if neither is present), and the exports it provides will be the same as those you export in your Main module.

So, given the example above produces a bundle where a PureScript function Main.main exists, you can access it from JavaScript via CommonJS like this:

var myBundle = require("./myBundle");
myBundle.main();

Building Documentation

PureScript has an inline syntax for documentation, which can be extracted into Markdown or HTML files using the purs docs command. pulp provides the pulp docs command to make this process easy:

$ pulp docs [--with-dependencies]

This extracts the documentation from your source files, and places it in the generated-docs folder under your project's root folder. By default, dependencies are not included, but this can be enabled with the --with-dependencies flag.

You can also extract documentation from your tests, if you like:

$ pulp docs --with-tests

The purs docs command itself also accepts some options to modify its behaviour, which can be specified by using pass-through options. The --format option is particularly useful, as it allows you to specify the desired output format. In particular, you can generate nice hyperlinked Pursuit-style HTML docs with the following command:

$ pulp docs -- --format html

It is a good idea to run this command and browse the generated HTML documentation before publishing a library to Pursuit, as doing so will allow you to spot any formatting issues or any declarations which are missing documentation.

Launching a REPL

The purs repl interactive shell for PureScript is fantastically useful, but setting it up can be a bit of a chore, especially with a large number of dependencies. That's where pulp repl comes in.

pulp repl will generate a .purs-repl file for your project automatically whenever you invoke it, and launch purs repl for you directly. It's as simple as:

$ pulp repl

Launching a Development Server

A common need when developing client side web apps is a tightly integrated development web server, which takes care of compilation for you on the fly. This is what pulp server is for: whenever you make a change to your source files, you just switch to your browser and hit the refresh button, and the server will compile and deliver your assets on the fly. No need to wait for the PureScript compiler to finish before switching to the browser.

pulp server only provides the most basic functionality: it will serve static assets from your project root, and it will serve your compiled JS bundle from /app.js.

A Quick Example

To see how this works, let's set up a project for serving the default hello world app through pulp server.

$ mkdir hello-server
$ cd hello-server
$ pulp init

We need an index.html file to load our compiled PureScript code. Place this in your new hello-server folder:

<!doctype html>
<html>
  <body>
    <h1>Hello sailor!</h1>
    <script src="/app.js"></script>
  </body>
</html>

Now, start the server:

$ pulp server

It will tell you that it's launched a web server at http://localhost:1337/, and after a little while it will tell you that it's finished compiling:

* Server listening on http://localhost:1337/
* Building project in /home/harry/code/hello-serve
Compiling Data.Symbol
Compiling Type.Data.RowList
Compiling Record.Unsafe
<snip>
* Build successful.
* Bundling JavaScript...
* Bundled.

If you browse to http://localhost:1337/, you should, in addition to the "Hello sailor!" header on the webpage, see that your PureScript code has printed the text "Hello sailor!" to the console.

I Need More

As mentioned, this is a very bare bones development server, since pulp server is intended as a starting point only. You're likely to quickly need more features if you plan on doing any kind of serious web development. At this point, you'll need to look further afield; one option is to use Webpack together with purs-loader.

Dependency Management

pulp is not a package manager, only a build tool. The PureScript community has standardised on Bower as the default package manager, but there are alternatives such as psc-package. Currently, pulp supports both Bower and psc-package.

Pulp expects the presence of a project manifest file in your project root, in which your project’s dependencies and other metadata are recorded. If you're using Bower, that file will be bower.json; if you're using psc-package, it will be psc-package.json.

When you run commands like pulp build, Pulp will locate PureScript source files from installed dependencies based on which of these two files it finds in your project, and pass these files on to the relevant program (e.g. purs compile). If your project has both bower.json and psc-package.json files, Pulp uses the dependencies installed via Bower by default; if you want to use dependencies installed via psc-package, you can use the --psc-package flag, e.g.

$ pulp --psc-package build

You can also run pulp --psc-package init to initialize a project with a psc-package.json file instead of a bower.json file.

Dependency Management Cheat Sheet

This document isn't going to explain how Bower works, or go into details about PureScript dependency management. However, a tl;dr is often enough to get you started and productive without having to dive into yet another package management system. It's going to be especially easy if you're already used to npm. So, here we go.

Installing Dependencies

To install the purescript-profunctor package into your project:

$ bower install purescript-profunctor

To also record this as a dependency in the bower.json file:

$ bower install --save purescript-profunctor

To install every dependency which has been recorded in bower.json as needed by your project:

$ bower install

Housekeeping

To remove an installed package:

$ bower uninstall purescript-profunctor

To remove it from bower.json as well:

$ bower uninstall --save purescript-profunctor

To list all packages installed in your project:

$ bower ls

To update all installed packages to the most recent version allowed by bower.json:

$ bower update

Releasing Packages

Imagine you've created a new PureScript library for working with zygohistomorphic prepromorphisms (because who doesn't need zygohistomorphic prepromorphisms), called purescript-zygo.

pulp init will have installed a basic bower.json file for you along with the project skeleton, but before you continue, you should read the Bower documentation on the file format and make sure you’ve configured it to your satisfaction before you publish your package. In particular, mind that you’ve added a license field.

Note that there is a convention of prefixing PureScript package names with purescript-. Please stick with that unless you have an especially good reason not to, as pulp and many other tools expect installed dependencies to follow this convention.

You would start by tagging an initial version:

$ cd /path/to/purescript-zygo
$ pulp version 0.1.0

This runs a few checks to ensure that your package is properly set up for publishing, and if they pass, creates a Git tag v0.1.0.

Publishing Packages

Bower packages are installed directly from Git repositories, and versioning follows Git tags. This means that once you've tagged a version, all you need to do to make a new release is push that tag to GitHub, register your package and upload your package's documentation to Pursuit.

Originally, pulp was designed to work exclusively with the Bower registry but things became complicated after it no longer accepted new PureScript package submissions. Older packages are still registered in Bower but new packages need to be registered in the PureScript Registry. The upshot is that you will usually use a spago workflow to prepare the ground for publication and then use pulp for the actual publication step itself. For this reason you should read spago: Publish my library before proceding. You may also find it useful to read the notes on How to submit packages in the Pursuit package authors guide.

The pulp publication commands are:

$ pulp login

followed by

$ pulp publish

For subsequent releases, the process is the same: pulp version <newversion> followed by pulp publish. When tagging a new version, pulp version also allows you to supply an argument of the form patch, minor, or major, in addition to specific versions. If you run pulp version patch, for example, Pulp will look through your Git tags to find the version number for the latest release, and then generate the new verision number by bumping the patch component. The minor and major arguments respectively perform minor and major version bumps in the same way.

Pulp does not currently support publishing packages which use psc-package exclusively, because without having submitted your package to a registry such as the Bower registry, there is no way of making sure that people agree which package a given package name refers to. This may change in the future.

Development

To work on pulp, after cloning the repository, run:

$ npm install
$ bower install

to install dependencies. Then, you can run

$ npm run -s build

to compile pulp, and

$ npm test

to run the tests.

Licence

Copyright 2014-2017 Bodil Stokke, Harry Garrood

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See the LICENSE file for further details.

changelog

Pulp Release History

16.0.0

Breaking:

  • Increased minimum purs version to v0.12.0 and dropped support for all compiler versions earlier than that. (#399 and #405 by @JordanMartinez)
  • Increased minimum psa version to v0.7.0 and dropped support for all versions earlier than that. (#399 by @JordanMartinez)
  • Increased minimum node version to v12.0.0 and dropped support for all versions earlier than that. (#401 by @JordanMartinez)
  • Include bower.json's devDependencies field when publishing (#405 by @JordanMartinez)

    Note: pulp publish will fail if a dependency (e.g. purescript-numbers) exists in both the bower.json file's dependencies and devDependencies field. When this occurs, you will see a message like the following:

    There is a problem with your package, which meant that it could not be published.
    Details:
      The following dependency does not appear to be installed:
        * purescript-numbers
    

Other improvements:

  • Added a debug flag that enables debugger output for the pulp publish command (#405 by @JordanMartinez)
  • Improve error message due to pulp publish needing to be run twice (#406 by @JordanMartinez)

    Whenever one runs pulp publish for the first time, the command will almost always fail with an HTTP 400 error due to invalid JSON. Running the command a second time will succeed and finish what was started in the first one. However, this fact is never communicated to users, so one can only handle this situation if they already know about it (e.g. aren't new users).

    The error message now suggests the user try running it a second time to get around this issue.

Internal:

  • Added support for the v0.15.0 compiler version (#401 by @JordanMartinez)
  • Update project and its dependencies to use PureScript v0.14.5 and v0.14.0-compatible libraries. (#399 by @JordanMartinez)
  • Migrated from Travis CI to GitHub Actions. (#399 by @JordanMartinez)
  • Updated CI integration tests to verify pulp works when the compiler version used is v0.12.x, v0.13.x, and v0.14.x. (#399 by @JordanMartinez)

15.0.0

  • Remove the check for main being an appropriate entry point when generating a call to main. This previously relied on a compiler-internal API (the externs.json files) which the compiler no longer produces as of v0.13.8. Note that previous versions of Pulp can work around this bug by passing the --no-check-main flag. (#392, @garyb).

14.0.0

  • Stop attempting to register on the Bower registry on publish, since the Bower registry no longer accepts new registrations. Instead, require the user to register their package in the purescript/registry repo (#388).

13.0.0

  • Changes to support purs >= 0.13.0 in pulp docs. Because of idiosyncrasies in the previous purs docs CLI, it has not been possible to support both, so support for purs < 0.13.0 in pulp docs has been dropped.
  • Remove the --with-dependencies option in pulp docs; now that html is the default output format of purs docs, it makes less sense to only produce local modules by default (since if we don't produce dependency modules then links will be broken). To restore the previous behaviour, you will need to run pulp docs -- --format markdown, and then manually delete non-local modules from the generated-docs/md directory.
  • Add a --build-path argument for pulp docs; to be passed to purs docs for purs >= 0.13.0, since purs docs now uses a compiler output directory.
  • Avoid using string-stream to fix pulp browserify on node 12.x (#380, @rnons).
  • Pass follow: true to gaze to follow symlinked directories (#378, @rnons).

12.4.2

  • Fix pulp version and pulp publish, which were both completely broken as of changes in v12.4.1 (@hdgarrood)

12.4.1

  • Switch to gaze instead of watchpack for --watch and pulp server; this fixes an issue where if you have source files which are symbolic links which point outside your source directory, changes to those files would not be picked up (@rnons, #371)
  • Fix an issue where pulp version and pulp publish would fail for packages which do not have any dependencies (@hdgarrood)

12.4.0

  • When running against a sufficiently new version of the PureScript compiler (specifically, v0.12.4 or later), when publishing, generate the new JSON format for resolutions files. This fixes an issue where Bower would produce out of memory errors when attempting to publish. (@hdgarrood, #351)

12.3.1

  • Bug fix: the compiler command line interface changed in 0.12 to replace the --source-maps option with a new --codegen option. pulp has now been made aware of this and so generating source maps should now work (with compilers from both before and after this change). (@nwolverson, #343)

12.3.0

  • Have pulp init generate projects based on compiler version: the pulp init command now has the ability to produce a project skeleton using either Effect or Eff. By default, Effect is chosen if the compiler version is at least 0.12.0, otherwise Eff is chosen. However, this behaviour can be overridden with the --with-eff or --with-effect flags to pulp init. (#340, @vladciobanu)

12.2.0

  • The type Effect.Effect is now considered by Pulp to be acceptable for the type of your program's entry point (usually Main.main). Control.Monad.Eff.Eff also continues to be acceptable. (#338)
  • Allow specifying a list of allowable types for your program's entry point, by separating them with commas. (#338)
  • Bug fix: allow specifying a specific version when running pulp version for the first time. (@plippe, #328)
  • Bug fix: Passthrough arguments with pulp run now go to your program, as the documentation claims, rather than to purs. (@kika, #309)
  • Bug fix: Pulp will no longer check that your program has an acceptable entry point when using pulp browserify --standalone, since there is no reason to do so. (#339)

12.1.0

  • Add source map support (@nwolverson, #305).

12.0.1

  • Fix a bug where running commands with --watch would sometimes produce an internal error (@thoradam, #300).

12.0.0

  • Add support for psc-package (@thoradam, #243). See the README for details.
  • Check that a program's entry point is of a suitable type when bundling (see https://github.com/purescript/purescript/issues/2086). By default main is required to be of type Eff, but this can be controlled using the --check-main-type flag. Alternatively this check can be turned off entirely using the --no-check-main flag.
  • Fix a bug where pulp would crash on uncommon operating systems (#299)
  • Fix an error in the help message for the --else option (@tkawachi, #294)

11.0.2

  • Fix a bug where running pulp version in a repo which didn't yet have any git tags would cause pulp to crash

11.0.1

  • Allow empty paths for the --include option (@anilanar, #263)
  • Various fixes to pulp's docs and --help output (@anttih)
  • If psa is being used, check that it is not too old (#272)
  • Use an exitcode of 1 on invalid options/commands (#285)
  • Set Cache-Control: no-cache in pulp server (@geigerzaehler, #288)

11.0.0

  • Compatibility with PureScript 0.11.x. Compatibility with 0.10.x and previous versions of the PureScript compiler has been dropped (@natefaubion).
  • Create a .purs-repl file during pulp init, to automatically import Prelude in new projects (@chexxor).

10.0.4

  • Fix an issue causing "EXDEV: cross-device link not permitted" errors in some configurations (#252).

10.0.3

Nothing changed this release, I just messed up the 10.0.2 release so published another patch-level update.

10.0.2

  • Allow pulp to work with recent development builds of the PureScript compiler (#255, @sloosch).
  • Fix a missing space character in a message during 'pulp run' (#256, @bionicbrian).

10.0.1

  • Fix an issue where extra command line arguments were not being passed to test programs properly (#239, @mcoffin).

10.0.0

Breaking changes

  • Explicit separation of passthrough arguments (#220). The original behaviour that unrecognised arguments were passed through to psc (or whichever underlying program pulp calls) has turned out to be confusing. Instead, passthrough arguments are now separated from pulp's arguments with a --. Any unrecognised arguments before the -- will now cause pulp to complain.
  • pulp server has been broken since 9.0.0 and is now fixed! It also no longer uses webpack and purs-loader, instead it builds with the same mechanisms that pulp build uses, which should make things more reliable and easier (#151). This is a breaking change because some command line options for pulp server were removed as they were webpack-specific and therefore no longer applicable.
  • Remove options from pulp run which were not applicable and should never have been there: --skip-entry-point, --to, and --optimise.
  • Remove pulp dep (#234). pulp dep has been deprecated for quite a long time now.

Other changes

  • Add --jobs for specifying parallelism in psc (#93).
  • Fix swallowing of "Compiling \<module\>" messages from psc.
  • Stop hardcoding version ranges in the initial bower.json created by pulp init (#231). Now, pulp delegates to bower install --save to select an appropriate version range.
  • Fix a bug where some arguments were mistakenly dropped instead of being passed to psc-bundle (#188).

9.1.0

  • Ignore .psc-ide-port, .psa-stash, and other dotfiles beginning with .psc or .psa in the default .gitignore file created by pulp init (@texastoland, #223, 225).
  • Bump version ranges in the default bower.json file created by pulp init to pick up the newest versions of core libraries (@Risto-Stevcev, #230).
  • Updated some npm dependencies to reduce the number of warnings you get when you run npm install pulp.

9.0.1

  • Improved error messages in the case where submitting a package to Pursuit as part of pulp publish fails.
  • Update README to use bower uninstall instead of the undocumented and presumably deprecated bower rm (@menelaos, #215).

9.0.0

  • Compatibility with version 0.9 of the PureScript compiler. Pulp no longer works with earlier versions of the PureScript compiler; to use earlier versions, you will need to downgrade to a previous version of Pulp.
  • Fix a bug where the version of psc being used was not being printed properly (#210).

8.2.1

  • Remove unused npm dependencies (xhr2, ansi, and supports-color).
  • Fix Pulp's description in package.json; Pulp is not a package manager.

8.2.0

  • Update the dependency on watchpack to fix deprecation warnings (#196).
  • Add a --no-push flag to pulp publish, allowing you to skip pushing tags to a Git remote as part of publishing (#201).
  • Add a --push-to option to pulp publish, allowing you to push to a specific Git remote (#201).

8.2.0-rc.3

  • Actually fix pulp login (which was still broken).
  • Include the response body for any errors from the GitHub API in pulp login.

8.2.0-rc.2

  • Remove the moduleType field from the bower.json file generated by pulp init.
  • Fix pulp login using the wrong environment variable for the home directory on Windows (#197).
  • Fix pulp login failing to check the auth token with GitHub (#199).
  • Don't require being inside a project to run pulp init (#200).

8.2.0-rc.1

  • Added pulp version for bumping versions and creating git tags for releases of PureScript packages, as well as pulp publish for sending those releases out into the world. See pulp version --help and pulp publish --help for more info.

8.1.1

  • Revert to an open Prelude import in the default code generated by pulp init.

8.1.0

  • Fix pulp browserify hanging on Windows.
  • Fix --dependency-path and --monochrome options not being honoured when using psa.
  • Add pulp login, which will be useful later along with the upcoming pulp release.
  • Fix compiler warnings in PureScript source files generated by pulp init.

8.0.0

  • Pulp's rebuild logic has been removed, as it was causing more trouble than it was worth. This means the --force flag is now once again only available on pulp browserify, to force a non-incremental build.
  • Pulp will now use the psa tool instead of psc if available on your path. You can disable this behaviour by passing the --no-psa flag.

Bugs fixed: #140.

7.0.0

  • Remove the --engine option, since the --runtime option fulfils the same need.
  • Fix the --runtime option, which was previously broken. (#143)
  • Fix a bug where Pulp was sometimes using terminal ANSI codes for colours when it shouldn't have been, and not using them when it should. (#147)
  • Relay interrupts (Ctrl+C) to psci when running pulp psci, so that long-running commands can be interrupted, and to stop the "hGetChar: hardware fault (Input/output error)" message from being shown. (#88)

6.2.1

  • Fix the --watch option, which was broken in 6.2.0.
  • Remove the --optimise option for pulp test and pulp server, since it doesn't really make sense with these commands.

6.2.0

  • pulp dep is now deprecated. It continues to work as before, but you will have to install Bower yourself in order to use it. It’s recommended that you use Bower directly instead.
  • New global options --before and --else to complement --then.
  • --skip-entry-point now works when using pulp build --to.

6.1.0

  • You can now use pulp browserify --standalone <module-name> to produce a browserified bundle wrapped in a UMD header, which can be require()d, and which re-exports the main module of your PureScript project. It works by invoking browserify --standalone; see the Browserify documentation.

6.0.1

  • Remove unnecessary postinstall script.

6.0.0

  • Pulp has been ported to PureScript :)

  • The --with-deps flag for pulp docs has been renamed to --with-dependencies.

Bugs fixed: #123, #122, #121, #111, #108, #92.

5.0.2

Bugs fixed: #109.

5.0.1

Bugs fixed: #105, #106, #107, #113.

5.0.0

  • Pulp will now skip the build step if your project hasn't changed since your last rebuild.

  • The --force flag is now avaliable on all commands that trigger a build, and will force a rebuild regardless of whether your project has changed. It still also forces a non-incremental build when used with pulp browserify.

  • You can now use the flags --src-path, --test-path and --dependency-path to override the normal locations for these directories.

  • The format for passing multiple directories to --include has changed: you now separate directories using the standard system path delimiter, as opposed to spaces.