Вызов методов из задачи в Cakefile - PullRequest
0 голосов
/ 27 марта 2012

Я настраиваю Cakefile, который будет компилировать и минимизировать мой CoffeeScript и минимизировать мои ванильные библиотеки.

Я создал разные задачи для каждого случая (будь то файл кофе или нет), но я хочуобъединить их в одну задачу.

Проблема, с которой я столкнулся, - это вызов метода из задачи;При некоторых обстоятельствах я могу без проблем вызвать метод, но в противном случае я получаю

    TypeError: undefined is not a function

Объект, над которым я работаю, выглядит как

source = 
  libs: [
    'lib/jquery-1.7.1.min.js'
    'lib/backbone.js'
    'lib/underscore.js'
  ]
  coffees: [
    'app/800cart.coffee'
    'app/models/coffee/cart.coffee'
    'app/models/coffee/contact.coffee'
  ]

И я хочу это сделать,и я получаю сообщение об ошибке

 task 'build', 'Concat, compile, and minify files', ->
    for fileType, files of source
        concatinate files

    concatinate = (files) ->
      console.log 'concatinating'

То, что меня действительно смущает, - это если я вызываю метод с условием, что он работает нормально

 task 'build', 'Concat, compile, and minify files', ->
    for fileType, files of source
        concatinate files if fileType is 'coffees'

    concatinate = (files) ->
      console.log 'concatinating'

Что я делаю здесь неправильно

1 Ответ

0 голосов
/ 27 марта 2012

Проблема в том, что вы пытаетесь вызвать concatinate, прежде чем определить concatinate с помощью строки concatinate =. Просто переместите декларацию или, что еще лучше, переместите ее за пределы определения задачи.

Вы, вероятно, привыкли к синтаксису function concatinate JavaScript, который автоматически перемещает функцию в верхнюю часть области видимости. Вместо этого CoffeeScript компилируется с синтаксисом concatinate = function, главным образом потому, что синтаксис function cocatinate ведет себя непоследовательно в разных средах выполнения JS (особенно IE). Таким образом, функции CoffeeScript просто подчиняются обычным правилам назначения переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...