]>
git.immae.eu Git - github/fretlink/purs-loader.git/blob - lib/bundle.js
3 var path
= require('path');
5 var Promise
= require('bluebird');
7 var fs
= Promise
.promisifyAll(require('fs'));
9 var spawn
= require('cross-spawn');
11 var debug
= require('debug')('purs-loader');
13 var dargs
= require('./dargs');
15 module
.exports
= function bundle(options
, bundleModules
) {
20 var bundleCommand
= options
.pscBundle
|| 'purs';
22 var bundleArgs
= (options
.pscBundle
? [] : ['bundle']).concat(dargs(Object
.assign({
23 _: [path
.join(options
.output
, '*', '*.js')],
24 output: options
.bundleOutput
,
25 namespace: options
.bundleNamespace
26 }, options
.pscBundleArgs
)));
28 bundleModules
.forEach(function (name
) {
29 return bundleArgs
.push('--module', name
);
32 debug('bundle: %s %O', bundleCommand
, bundleArgs
);
34 return new Promise(function (resolve
, reject
) {
35 debug('bundling PureScript...');
37 var compilation
= spawn(bundleCommand
, bundleArgs
);
39 compilation
.stdout
.on('data', function (data
) {
40 return stdout
.push(data
.toString());
43 compilation
.stderr
.on('data', function (data
) {
44 return stderr
.push(data
.toString());
47 compilation
.on('close', function (code
) {
48 debug('finished bundling PureScript.');
51 var errorMessage
= stderr
.join('');
53 if (errorMessage
.length
) {
54 psModule
.emitError(errorMessage
);
57 reject(new Error('bundling failed'));
59 resolve(fs
.appendFileAsync(options
.bundleOutput
, 'module.exports = ' + options
.bundleNamespace
));