X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=README.md;h=931e4e6f7f8d27a4995c78ebd09f81121639fc06;hb=df8798fa0eeeb3dfcce14dc10100b03f708b57f6;hp=8a310d5fdff3598a483dd3062e10b891a4937a6c;hpb=1983893bf09a5c2ea1946e156be5da170075af7e;p=github%2Ffretlink%2Fpurs-loader.git diff --git a/README.md b/README.md index 8a310d5..931e4e6 100644 --- a/README.md +++ b/README.md @@ -2,100 +2,94 @@ > [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=` the specifies the output directory, `output` by default. - -###### `noPrefix` (Boolean) - -Toggles `--no-prefix` that does not include the comment header. +// For PureScript 0.8 +npm install purs-loader@purescript-0.8 --save-dev +``` -###### `requirePath` (String) +## Example -Sets `--require-path=` that specifies the path prefix to use for `require()` calls in the generated JavaScript. +```javascript +const webpackConfig = { + // ... + loaders: [ + // ... + { + test: /\.purs$/, + loader: 'purs-loader', + exclude: /node_modules/, + query: { + psc: 'psa', + src: ['bower_components/purescript-*/src/**/*.purs', 'src/**/*.purs'] + } + } + // ... + ] + // ... +} +``` -###### `ffi` (String Array) +Refer to the [purescript-webpack-example](https://github.com/ethul/purescript-webpack-example) for a more detailed example. + +### Options + +Default options: + +```javascript +const loaderConfig = { + 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} + pscIdeServerArgs: {}, // for example, to change the port { port: 4088 } + pscIdeColors: false, // defaults to true if psc === 'psa' + pscPackage: false, + bundleOutput: 'output/bundle.js', + bundleNamespace: 'PS', + bundle: false, + warnings: true, + watch: false, // indicates if webapck is in watch mode + output: 'output', + src: [ + path.join('src', '**', '*.purs'), + // if pscPackage = false + path.join('bower_components', 'purescript-*', 'src', '**', '*.purs') + // if pscPackage = true + // source paths reported by `psc-package sources` + ] +} +``` -Specifies the PureScript FFI files setting `--ffi=`. Glob syntax is supported. This option is specified as `ffi[]=path`. +### `psc-ide` support (experimental) -###### `src` (String Array) +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`, +if there is no server running this loader will start one for you. -Specifies the PureScript source files. Glob syntax is supported. This option is specified as `src[]=path`. -## Example +#### Slower webpack startup after using purs-loader ? -```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') } - } - ; +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 +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 -module.exports = config; -``` +### `psc-package` support (experimental) -See the [example](https://github.com/ethul/purs-loader/tree/master/example) directory for a complete example. +Set `pscPackage` query parameter to `true` to enable `psc-package` support. The `psc-package`-supplied source paths +will be appended to `src` parameter.