X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=README.md;h=cc4373eee5be923e4d73505e4941a7160b38d5ce;hb=e227b9ac6fd39aa90e2ecd5b443cb687aeb8cdf7;hp=150c2c06d5fdc88840a50896a39fbb0dc45c2f9a;hpb=cbb7579562d203e99a1f751d8f518e680d5b81eb;p=github%2Ffretlink%2Fpurs-loader.git diff --git a/README.md b/README.md index 150c2c0..cc4373e 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,12 @@ Install with [npm](https://npmjs.org/package/purs-loader). ``` -// For PureScript 0.9 and newer +// For PureScript 0.11 and newer npm install purs-loader --save-dev +// For PureScript 0.9 and 0.10 +npm install purs-loader@purescript-0.9 --save-dev + // For PureScript 0.8 npm install purs-loader@purescript-0.8 --save-dev ``` @@ -48,13 +51,16 @@ Default options: ```javascript const loaderConfig = { - psc: 'psc', + psc: null, // purs compile pscArgs: {}, - pscBundle: 'psc-bundle', + pscBundle: null, // purs bundle pscBundleArgs: {}, pscIde: false, // instant rebuilds using psc-ide-server (experimental) - pscIdeArgs: {}, // for example, to use different psc-ide-server port: {port: 4088} - pscIdeServerArgs: {}, // for example, to change the port { port: 4088 } + pscIdeClient: null, // purs ide client + pscIdeClientArgs: {}, // for example, to use different port {port: 4088} + pscIdeServer: null, // purs ide server + pscIdeServerArgs: {}, // for example, to change the port {port: 4088} + pscIdeRebuildArgs: {} // for example, for sourcemaps {codegen: ['js', 'sourcemaps']} pscIdeColors: false, // defaults to true if psc === 'psa' pscPackage: false, bundleOutput: 'output/bundle.js', @@ -80,8 +86,14 @@ via the `pscIde: true` option. You can use an already running `psc-ide-server` instance by specifying the port in `pscIdeArgs`, if there is no server running this loader will start one for you. +### `psc-package` support (experimental) + +Set `pscPackage` query parameter to `true` to enable `psc-package` support. The `psc-package`-supplied source paths +will be appended to `src` parameter. + +### Troubleshooting -#### Slower webpack startup after using purs-loader ? +#### Slower webpack startup after enabling psc-ide support? By default, the psc-ide-server will be passed the globs from query.src, this is helpful for other tools using psc-ide-server (for example IDE plugins), however @@ -89,7 +101,41 @@ it might result in a slower initial webpack startup time (rebuilds are not affected). To override the default behaviour, add: `pscIdeServerArgs: { "_": ['your/*globs/here'] }` to the loader config -### `psc-package` support (experimental) +#### Errors not being displayed in watch mode? -Set `pscPackage` query parameter to `true` to enable `psc-package` support. The `psc-package`-supplied source paths -will be appended to `src` parameter. +When the `watch` option is set to `true`, psc errors are appended to +webpack's compilation instance errors array and not passed back as an +error to the loader's callback. This may result in the error not being +reported by webpack. To display errors, the following plugin may be added +to the webpack config. + +```javascript +const webpackConfig = { + // ... + plugins: [ + function(){ + this.plugin('done', function(stats){ + process.stderr.write(stats.toString('errors-only')); + }); + } + ] + // ... +} +``` + +#### Error `spawn ENOENT` + +This is caused when the loader tries to spawn a binary that does not exists +(`file or directory not found`). If you call webpack like `webpack` or +`webpack --watch`, then ensure that all required binaries that the +loader depends on are available in your `$PATH`. + +If you run webpack through an npm script (e.g., npm run or npm start) on NixOS, +then it will first attempt to find binaries in `node_packages/.bin`. +If you have the compiler installed through `npm` and it finds it there, this will +cause `ENOENT`on Nix, because [the binary needs to be patched first, but npm will +install the binary that is linked with /lib64/ld-linux-x86-64.so.2 - a file that +will not exist at that path in NixOS](https://github.com/ethul/purescript-webpack-example/issues/5#issuecomment-282492131). +The solution is to simply use the compiler from `haskellPackages.purescript` and +make sure that it's available in `$PATH`. For more information about how to make +it work on Nix, see [Purescript Webpack Example](https://github.com/ethul/purescript-webpack-example#using-globally-installed-binaries)