]> git.immae.eu Git - github/fretlink/purs-loader.git/blame - README.md
Update README for error reporting
[github/fretlink/purs-loader.git] / README.md
CommitLineData
a42f24b8 1# purs-loader
2
08b34471 3> [PureScript](http://www.purescript.org) loader for [webpack](http://webpack.github.io)
a42f24b8 4
7de41f10
AM
5- Supports hot-reloading and rebuilding of single source files
6- Dead code elimination using the `bundle` option
7- Colorized build output using `purescript-psa` and the `psc: "psa"` option
8
a42f24b8 9## Install
10
63d6a244 11Install with [npm](https://npmjs.org/package/purs-loader).
12
a42f24b8 13```
2d52ea7e 14// For PureScript 0.9 and newer
a9a26a84 15npm install purs-loader --save-dev
2b2207bd 16
495b765e 17// For PureScript 0.8
689268da 18npm install purs-loader@purescript-0.8 --save-dev
a42f24b8 19```
20
a42f24b8 21## Example
22
7de41f10
AM
23```javascript
24const webpackConfig = {
25 // ...
26 loaders: [
27 // ...
28 {
29 test: /\.purs$/,
30 loader: 'purs-loader',
31 exclude: /node_modules/,
32 query: {
33 psc: 'psa',
2b2207bd 34 src: ['bower_components/purescript-*/src/**/*.purs', 'src/**/*.purs']
7de41f10
AM
35 }
36 }
37 // ...
38 ]
39 // ...
40}
41```
42
44eb153b 43Refer to the [purescript-webpack-example](https://github.com/ethul/purescript-webpack-example) for a more detailed example.
44
5163b5a2
AM
45### Options
46
7de41f10
AM
47Default options:
48
49```javascript
86e2b3d4 50const loaderConfig = {
7de41f10
AM
51 psc: 'psc',
52 pscArgs: {},
53 pscBundle: 'psc-bundle',
54 pscBundleArgs: {},
5163b5a2 55 pscIde: false, // instant rebuilds using psc-ide-server (experimental)
39d11a26 56 pscIdeArgs: {}, // for example, to use different psc-ide-server port: {port: 4088}
6ab1eca0 57 pscIdeServerArgs: {}, // for example, to change the port { port: 4088 }
7de41f10 58 pscIdeColors: false, // defaults to true if psc === 'psa'
86e2b3d4 59 pscPackage: false,
7de41f10
AM
60 bundleOutput: 'output/bundle.js',
61 bundleNamespace: 'PS',
62 bundle: false,
63 warnings: true,
cbb75795 64 watch: false, // indicates if webpack is in watch mode
7de41f10
AM
65 output: 'output',
66 src: [
67 path.join('src', '**', '*.purs'),
86e2b3d4 68 // if pscPackage = false
7de41f10 69 path.join('bower_components', 'purescript-*', 'src', '**', '*.purs')
495b765e 70 // if pscPackage = true
71 // source paths reported by `psc-package sources`
2b2207bd 72 ]
7de41f10
AM
73}
74```
5163b5a2 75
495b765e 76### `psc-ide` support (experimental)
5163b5a2
AM
77
78Experimental support for instant rebuilds using `psc-ide-server` can be enabled
79via the `pscIde: true` option.
4343e0eb
MK
80You can use an already running `psc-ide-server` instance by specifying the port in `pscIdeArgs`,
81if there is no server running this loader will start one for you.
82
03f52cb3 83### `psc-package` support (experimental)
84
85Set `pscPackage` query parameter to `true` to enable `psc-package` support. The `psc-package`-supplied source paths
86will be appended to `src` parameter.
87
88### Troubleshooting
4343e0eb 89
03f52cb3 90#### Slower webpack startup after enabling psc-ide support?
4343e0eb
MK
91
92By default, the psc-ide-server will be passed the globs from query.src, this is
93helpful for other tools using psc-ide-server (for example IDE plugins), however
94it might result in a slower initial webpack startup time (rebuilds are not
95affected). To override the default behaviour, add:
96`pscIdeServerArgs: { "_": ['your/*globs/here'] }` to the loader config
97
03f52cb3 98#### Errors not being displayed in watch mode?
4343e0eb 99
03f52cb3 100When the `watch` option is set to `true`, psc errors are appended to
101webpack's compilation instance errors array and not passed back as an
102error to the loader's callback. This may result in the error not being
103reported by webpack. To display errors, the following plugin may be added
104to the webpack config.
105
106```javascript
107const webpackConfig = {
108 // ...
109 plugins: [
110 function(){
111 this.plugin('done', function(stats){
112 process.stderr.write(stats.toString('errors-only'));
113 });
114 }
115 ]
116 // ...
117}
118```