在节点上使用RequireJS来优化创建单个输出文件并不包括所有必需的文件

时间:2018-09-01 07:16:44

标签: javascript node.js faye requirejs-optimizer

我使用FayeJS,最新版本已修改为使用RequireJS,因此不再有单个文件链接到浏览器。相反,结构如下:

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

我正在使用以下nodejs构建脚本来尝试将以上所有内容缩小到一个文件中:

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);
});

faye_browser.js的内容是:

'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;

按照我的理解,优化器应该提取所需的文件,然后,如果那些文件具有所需的文件,则它应该提取那些等...,并输出包含以下内容的单个缩小的faye.min.js:全部,经过重构,因此不需要其他服务器端调用。

发生的事情是faye.min.js被创建,但是只包含faye_browser.js的内容,没有包含其他必需文件。

我在网上搜索了所有内容,并查看了很多不同的示例,但这些示例都不适合我。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

对于其他尝试这样做的人,我在下载页面上说:

  

Node.js版本可通过npm获得。此包装包含一个   浏览器客户端的副本,由Faye服务器在以下情况下提供   运行。

因此,您必须通过NPM下拉代码,然后进入NPM安装目录,该目录位于“客户端”目录中。