2017-02-02 2 views
0

ES6 Для локализации в моем React проекте я использую автоматически сгенерированные ES6 модуль, который выглядит следующим образом:Webpack низкая производительность сборки с большим модулем

var Resources = new Array(); 
Resources['en-US']={}; 
Resources['en-US'].hello = 'Hello'; 
Resources['en-US'].welcome = 'Welcome'; 

.. snip ... 

Resources['sv-SE']={}; 
Resources['sv-SE'].hello = 'Hej'; 
Resources['sv-SE'].welcome = 'Välkommen'; 

export default Resources; 

Массив ресурсов содержит около 2500 позиций.

В моих Реагировать компоненты я использую модуль ресурсов, как:

import React from 'react'; 
import Resources from '../Assets/Resources'; 

var Test = React.createClass({ 
    propTypes: { 
     culture: React.PropTypes.string 
    }, 

    render: function() { 
     return (
      <div>{Resources[this.props.culture].hello</div> 
     ); 
    }  
}); 

export default Test; 

Проблема заключается в том, когда я использую Webpack для пакетирования проекта. Время сборки составляет около 78 секунд (78000 мс), инкрементные сборки быстрые, хотя (около 400 мс).

Если я разделяю массив ресурсов на гораздо меньшее количество элементов (например, 10 элементов), время сборки уменьшается до 7 секунд (7000 мс), что кажется гораздо более разумным.

Кто-нибудь знает, как ускорить время сборки?

+3

сохранить ресурсы как json-файл? так что веб-пакет не должен обрабатывать его как javascript? –

+0

Почему ресурсы массива? – maioman

+0

@maioman, решение массива так, что я могу вызвать локализацию, используя ресурсы [en-US]. Привет, например. У вас есть лучшая реализация модуля Resources, так что я все еще могу получить правильную локализацию, используя тот же синтаксис (или синтаксис, который имеет ressembles)? – alkesos

ответ

1

Решение состоит в том, чтобы сохранить ресурсный модуль как json-файл (если данные не требуют каких-либо вычислений, выполняемых JavaScript) и использовать соответствующий загрузчик (json-loader).

Таким образом, веб-пакет не обрабатывает файл как JS, поэтому время сборки должно быть быстрее.

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