Понимание различных способов экспорта в конфиге Brunch

1

Итак, я получил этот файл конфигурации:

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']
  }
}

И теперь код начальной загрузки не скомпилируется в окончательные таблицы стилей. Почему я испытываю такое поведение?

Теги:
module
brunch

1 ответ

1
Лучший ответ

Этот вопрос напрямую не связан с Brunch, но больше, как узел обрабатывает экспорт. Ознакомьтесь с этим объяснением, взятым из документов узла:

Переменная экспорта доступна в пределах области файлового уровня модуля и ей присваивается значение module.exports перед вычислением модуля.

Он позволяет использовать ярлык так, чтобы module.exports.f =... можно было писать более кратко как exports.f =... Однако module.exports.f =..., что, как и любая переменная, если новое значение присваивается exports, оно больше не связанный с module.exports:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню