了解Brunch配置中的不同导出方式

时间:2017-09-08 15:16:25

标签: javascript module brunch

所以我得到了这个配置文件:

exports.files = {
  javascripts: {
    joinTo: {
      'vendor.js': /^(?!app)/, // Files that are not in `app` dir.
      'app.js': /^app/
    }
  },
  stylesheets: {joinTo: 'app.css'}
};

exports.plugins = {
  babel: {presets: ['latest']}
};

exports.npm = {
  styles: {
    bootstrap: ['dist/css/bootstrap.css']
  }
}

当触发上面的代码时,5个文件被构建并编译成3个,如预期的那样。

然后为了更好地理解,我将配置文件中的首次导出更改为:

module.exports = {
    files: {
        javascripts: {
            joinTo: {
                'vendor.js': /^(?!app)/, 
                'app.js': /^app/
            }
        },
        stylesheets: {joinTo: 'app.css'}
    }
}

exports.plugins = {
  babel: {presets: ['latest']}
};

exports.npm = {
  styles: {
    bootstrap: ['dist/css/bootstrap.css']
  }
}

现在,引导代码无法编译到最终的样式表中。为什么我会遇到这种行为?

1 个答案:

答案 0 :(得分:1)

这个问题与Brunch没有直接关系,而是更多节点如何处理导出问题。查看从node docs

中获取的解释
  

导出变量在模块的文件级范围内可用,   并在模块之前分配module.exports的值   评价。

     

它允许使用快捷方式以便可以写入module.exports.f = ...   更为简洁exports.f = ...然而,要注意像任何一样   变量,如果为exports分配了新值,则不再绑定   到module.exports

module.exports.hello = true; // Exported from require of module
exports = { hello: false };  // Not exported, only available in the module