2015-03-13 3 views
4

Я пытаюсь настроить webpack для моего проекта. Проект достаточно большой и предоставляется на нескольких языках. Я хочу, чтобы каждая из моих точек входа предоставлялась на каждом языке в виде отдельных файлов. Мои языковые файлы - это не просто JSON, а JavaScript. Поэтому плагин i18n не соответствует моим потребностям.Webpack: Можно ли оценить выражение javascript во время компиляции?

Решение, кажется, похож на i18n плагин:

var languages = ['en', 'fr', 'de']; 
module.exports = languages.map(function (lang) { 
    return { 
    name: lang, 
    // some other language-dependent config 
    } 
}) 

Тогда в некоторых из моих сценариев, которые я хочу, чтобы требовать файл локализации, с помощью переменной среды:

var lang = ...; // some environment variable, available only at compile time 
var l10n = require('./lang/' + lang); 

Но по умолчанию WebPack попыток для хранения этого выражения между скобками, предполагающими его позднее в браузере.

Так есть способ сказать webpack оценить это сразу?

Возможно, у кого-то есть лучшее решение моей проблемы?

+1

Возможно, вы ищете инструмент построения, такой как Grunt? – jfriend00

+0

Как может бегун задачи помочь решить эту проблему? – Girafa

+0

Похоже, вы хотите перебирать некоторую структуру данных Javascript и создавать отдельные сборки на основе этой итерации. Программируемый инструмент сборки, который может читать файлы JSON и может быть запрограммирован на то, чтобы сделать что угодно, что-то похожее на это. Просто пытаюсь помочь. – jfriend00

ответ

10

Вы должны иметь возможность использовать Webcack's DefinePlugin для установки языка во время компиляции.

Например, вы могли бы написать ваш требуйте как:

var l10n = require('./lang/' + APPLICATION_LANGUAGE); 

и в вашей конфигурации, имеет

plugins: [ 
    new webpack.DefinePlugin({ 
    APPLICATION_LANGUAGE: JSON.stringify(lang) 
    }) 
] 

Вы можете иметь свой сценарий сборки условно установить «язык», основанную на каком-либо параметре или переменная env или что-то еще.

+0

Удивительный! Не знаю, как я пропустил этот. Вы сохранили мои выходные))) – Girafa

+0

Хорошее и простое решение: +1: –

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