]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - README.md
Emit warnings/errors to the compilation instance
[github/fretlink/purs-loader.git] / README.md
index a45573f346dfb71d00a927b4f50cd60fcc3b1d6a..9d6166b075cbf7a4ef537ecd0da3afff4a6f0458 100644 (file)
--- a/README.md
+++ b/README.md
 
 > [PureScript](http://www.purescript.org) loader for [webpack](http://webpack.github.io)
 
+- Supports hot-reloading and rebuilding of single source files
+- Dead code elimination using the `bundle` option
+- Colorized build output using `purescript-psa` and the `psc: "psa"` option
+
 ## Install
 
-Install with [npm](https://npmjs.org/package/purs-loader)
+Install with [npm](https://npmjs.org/package/purs-loader).
 
 ```
+// For PureScript 0.9 and newer
 npm install purs-loader --save-dev
-```
-
-## Options
-
-###### `noPrelude` (Boolean)
-
-Toggles `--no-prelude` that omits the Prelude.
-
-###### `noTco` (Boolean)
-
-Toggles `--no-tco` that disables tail-call optimizations.
-
-###### `noMagicDo` (Boolean)
-
-Toggles `--no-magic-do` that disables optimizations overloading the do keyword generating efficient code for the `Eff` monad.
-
-###### `noOpts` (Boolean)
-
-Toggles `--no-opts` that skips the optimization phase.
-
-###### `verboseErrors` (Boolean)
-
-Toggles `--verbose-errors` that displays verbose error messages.
-
-###### `comments` (Boolean)
-
-Toggles `--comments` that includes comments in generated code.
-
-###### `output` (String)
-
-Sets `--output=<string>` the specifies the output directory, `output` by default.
 
-###### `noPrefix` (Boolean)
-
-Toggles `--no-prefix` that does not include the comment header.
-
-###### `requirePath` (String)
-
-Sets `--require-path=<string>` that specifies the path prefix to use for `require()` calls in the generated JavaScript.
-
-###### `ffi` (String Array)
-
-Specifies the PureScript FFI files setting `--ffi=<string>`. Glob syntax is supported. This option is specified as `ffi[]=path`.
-
-###### `src` (String Array)
-
-Specifies the PureScript source files. Glob syntax is supported. This option is specified as `src[]=path`.
+// Fore PureScript 0.8
+npm install purs-loader@purescript-0.8 --save-dev
+```
 
 ## Example
 
-```js
-// webpack.config.js
-
-var path = require('path');
-
-var srcs = ['src[]=bower_components/purescript-*/src/**/*.purs', 'src[]=src/**/*.purs'];
-
-var ffis = ['ffi[]=bower_components/purescript-*/src/**/*.js'];
-
-var output = 'output';
-
-var modulesDirectories = [
-  'node_modules',
-  // The bower component for purescript-prelude is specified here to
-  // allow JavaScript files to require the 'Prelude' module globally.
-  'bower_components/purescript-prelude/src',
-  // The output directory is specified here to allow PureScript files in
-  // your source to import other PureScript modules in your source.
-  output
-];
-
-var config
-  = { entry: './src/entry'
-    , output: { path: __dirname
-              , pathinfo: true
-              , filename: 'bundle.js'
-              }
-    , module: { loaders: [ { test: /\.purs$/
-                           , loader: 'purs-loader?output=' + output + '&' + srcs.concat(ffis).join('&')
-                           } ] }
-    , resolve: { modulesDirectories: modulesDirectories
-               , extensions: ['', '.js', '.purs']
-               }
-    , resolveLoader: { root: path.join(__dirname, 'node_modules') }
+```javascript
+const webpackConfig = {
+  // ...
+  loaders: [
+    // ...
+    {
+      test: /\.purs$/,
+      loader: 'purs-loader',
+      exclude: /node_modules/,
+      query: {
+        psc: 'psa',
+        src: ['bower_components/purescript-*/src/**/*.purs', 'src/**/*.purs']
+      }
     }
-    ;
-
-module.exports = config;
+    // ...
+  ]
+  // ...
+}
 ```
 
-See the [example](https://github.com/ethul/purs-loader/tree/master/example) directory for a complete example.
+Refer to the [purescript-webpack-example](https://github.com/ethul/purescript-webpack-example) for a more detailed example.
+
+### Options
+
+Default options:
+
+```javascript
+{
+  psc: 'psc',
+  pscArgs: {},
+  pscBundle: 'psc-bundle',
+  pscBundleArgs: {},
+  pscIde: false, // instant rebuilds using psc-ide-server (experimental)
+  pscIdeArgs: {}, // for example, to use different psc-ide-server port: {port: 4088}
+  pscIdeColors: false, // defaults to true if psc === 'psa'
+  bundleOutput: 'output/bundle.js',
+  bundleNamespace: 'PS',
+  bundle: false,
+  warnings: true,
+  output: 'output',
+  src: [
+    path.join('src', '**', '*.purs'),
+    path.join('bower_components', 'purescript-*', 'src', '**', '*.purs')
+  ]
+}
+```
 
-## Notes
+### Instant rebuilds (experimental)
 
-A `.psci` file is generated during each run of the loader.
+Experimental support for instant rebuilds using `psc-ide-server` can be enabled
+via the `pscIde: true` option.
+You can use an already running `psc-ide-server` instance by specifying the port in `pscIdeArgs`.