Using RequireJS with node to optimize creating single output file does not include all the required files

54 Views Asked by At

I use the FayeJS and the latest version has been modified to use RequireJS, so there is no longer a single file to link into the browser. Instead the structure is as follows:

/adapters
/engines
/mixins
/protocol
/transport
/util
faye_browser.js

I am using the following nodejs build script to try and end up with all the above minified into a single file:

var fs = require('fs-extra'),
    requirejs = require('requirejs');

var config = {
    baseUrl: 'htdocs/js/dev/faye/'
    ,name: 'faye_browser'
    , out: 'htdocs/js/dev/faye/dist/faye.min.js'
    , paths: {
        dist: "empty:"
    }
    ,findNestedDependencies: true
};

requirejs.optimize(config, function (buildResponse) {
    //buildResponse is just a text output of the modules
    //included. Load the built file for the contents.
    //Use config.out to get the optimized file contents.
    var contents = fs.readFileSync(config.out, 'utf8');
}, function (err) {
    //optimization err callback
    console.log(err);
});

The content of faye_browser.js is:

'use strict';

var constants = require('./util/constants'),
    Logging   = require('./mixins/logging');

var Faye = {
  VERSION:    constants.VERSION,

  Client:     require('./protocol/client'),
  Scheduler:  require('./protocol/scheduler')
};

Logging.wrapper = Faye;

module.exports = Faye;

As I under stand it the optimizer should pull in the required files, and then if those files have required files, it should pull in those etc..., and and output a single minified faye.min.js that contains the whole lot, refactored so no additional serverside calls are necessary.

What happens is faye.min.js gets created, but it only contains the content of faye_browser.js, none of the other required files are included.

I have searched all over the web, and looked at a heap of different examples and none of them work for me.

What am I doing wrong here?

1

There are 1 best solutions below

0
user2109254 On

For anyone else trying to do this, I mist that on the download page it says:

The Node.js version is available through npm. This package contains a copy of the browser client, which is served up by the Faye server when running.

So to get it you have to pull down the code via NPM and then go into the NPM install dir and it is in the "client" dir...