2015-09-07 2 views
2

Я только что начал использовать babel с grunt-babel в своем приложении. Но я встречаю некоторое поведение я хочу избежать:grunt-babel разрывает форматирование файла (новые строки и пробелы)

Перед столпотворением:

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('Ctrl', Ctrl); 

    Ctrl.$inject = ['$stateParams']; 

    function Ctrl($stateParams) { 

    } 
})(); 

После столпотворения:

(function() { 
    'use strict'; 

    angular.module('app.standingOrder').controller('Ctrl', Ctrl); 

    Ctrl.$inject = ['$stateParams']; 

    function Ctrl($stateParams) {} 
})(); 

Моей черновой задачи выглядит следующим образом:

babel: { 
    options: { 
     sourceMap: false, 
     blacklist: ['strict'] 
    }, 
    dist: { 
     files: [ 
      { 
       src: [ 'src/**/*.js' ], 
       cwd: '<%= build_dir %>', 
       dest: '<%= build_dir %>', 
       expand: true 
      } 
     ] 
    } 
}, 

Обратите внимание, что babel удаляет пустые строки, добавляет/удаляет пробелы, которые прерывают предыдущее форматирование.

Есть ли способ избежать этого и сохранить мое форматирование?

+1

вы можете попробовать прохождение 'retainLines' опционам в хрюкать. https://babeljs.io/docs/usage/options/ «это приведет к дурацкому коду, но будет полезно для сценариев, где вы не можете использовать исходные карты». – azium

+1

Почему вы хотите сохранить форматирование? Он должен быть достаточно хорош, чтобы отлаживать с помощью точек останова то, как он формально формируется. – azium

+1

Одна из причин - слишком легко отслеживать номера линий в зоне покрытия кода. Вторая причина заключается в том, чтобы доказать моим коллегам, которые не используют синтаксис ES6, что Babel никак не повлияет на их код. –

ответ

1

Опция retainLines попытается сохранить ваши номера строк. https://babeljs.io/docs/usage/options/

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

Вы можете использовать Repl, чтобы увидеть, что Бабеля собирается сделать https://babeljs.io/repl/

Смежные вопросы