Разделение css приложения и поставщика в Brunch

Мой шаблон Brunch компилирует весь мой код в app.js, а все сторонние зависимости — в vendor.js (довольно стандартный подход). Я хотел бы сделать то же самое с CSS, и раньше это работало, но когда я перешел на использование Bower, что-то перестало работать, и теперь я получаю следующую ошибку:

Ошибка: не удалось загрузить конфигурацию /path-to-root/config.coffee. SyntaxError: неожиданно { в Object.exports.loadConfig (/usr/local/share/npm/lib/node_modules/brunch/lib/helpers.js:448:15)

из файла конфигурации (config.cofee), который выглядит следующим образом:

files:
    javascripts:
      joinTo: 
        'javascripts/app.js': /^app/
        'javascripts/vendor.js': /^(bower_components|vendor)/
        'test/javascripts/test-vendor.js': /^test(\/|\\)(?=vendor)/

    stylesheets:
      joinTo:
        'stylesheets/app.css': /^app/
        'stylesheets/vendor.css': /^(bower_components|vendor)/

Если вместо этого я просто уберу две строки для таблиц стилей и поставлю эту единственную строку на свое место, все будет работать без ошибок:

'таблицы стилей/vendor.css': /^(приложение|bower_components|поставщик)/

Я как бы живу с этим, но это вызывает все больше и больше проблем, и я хотел бы разобраться. Любая помощь будет принята с благодарностью.

На случай, если возникнет вопрос... я использую версию бранча 1.7.6.


person ken    schedule 21.09.2013    source источник


Ответы (3)


Я сбит с толку, но думаю, что предположение Пола о том, что, возможно, в файл попал специальный символ, кажется вероятным. Теперь он работает с конфигурацией, которая кажется идентичной той, которая раньше НЕ работала. Вот полный файл конфигурации:

sysPath = require 'path'

exports.config =
  # See http://brunch.io/#documentation for documentation.
  files:
    javascripts:
      joinTo:
        'javascripts/app.js': /^app/
        'javascripts/vendor.js': /^(bower_components|vendor)/
        'test/javascripts/test-vendor.js': /^test(\/|\\)(?=vendor)/

    stylesheets:
      joinTo: 
        'stylesheets/app.css': /^app/
        'stylesheets/vendor.css': /^(bower_components|vendor)/

    templates:
      precompile: true
      root: 'templates'
      joinTo: 'javascripts/app.js' : /^app/

      modules:
        addSourceURLs: true

  # allow _ prefixed templates so partials work
  conventions:
    ignored: (path) ->
      startsWith = (string, substring) ->
        string.indexOf(substring, 0) is 0
      sep = sysPath.sep
      if path.indexOf("app#{sep}templates#{sep}") is 0
        false
      else
        startsWith sysPath.basename(path), '_'
person ken    schedule 24.09.2013

Это довольно странно, но мне пришлось сделать следующее (добавить / в конце) для того же случая

stylesheets: {
    joinTo: {
        'css/vendor.css': /^(vendor|bower_components)\//,
        'css/styles.css': /^app\/css\//
    }
}
person Lt.    schedule 24.09.2013
comment
Регулярное выражение, которое у меня было, было в порядке. Для меня проблема заключалась в скрытом символе в файле (или, по крайней мере, я так думаю), потому что сейчас у меня есть практически тот же файл, но он не дает мне ошибки. - person ken; 24.09.2013

У меня была та же проблема, что и у Кена. Что решило это для меня, так это просто удалить оскорбительные строки из файла config.coffee и просто снова ввести их с нуля. Это гарантирует отсутствие скрытых символов и запускает сценарий снова.

person montecruiseto    schedule 19.07.2014