0

К примеру у меня есть модуль с некоторыми конфигурациями:Как требовать или импортировать только необходимый экспорт из модуля с WebPack

exports.common = { 
 
\t cookieDomain: '.mydomain.dev', 
 
\t protocol: 'http', 
 
\t apiPort: 3030 
 
} 
 

 
exports.server { 
 
\t port: 8080 
 
}

В другом модуле я хочу, чтобы требовать только config.common объекта, но избежать что код от config.server попал в комплект клиента. Возможно ли это с помощью webpack?

+0

Это станет возможным с помощью webpack 2 (который в настоящее время находится в стадии бета-тестирования), но только для синтаксиса ES2015, если я не ошибаюсь. – nils

+0

Не совсем. Не помещайте обе вещи в один и тот же модуль, если они вам не нужны. – Bergi

ответ

2

Это называется «Встряхивание деревьев» и will be a part of webpack 2. Вы не можете использовать синтаксис CommonJS, хотя, вам нужно будет использовать синтаксис модуля ES2015:

экспорт:

export const common = { 
    cookieDomain: '.mydomain.dev', 
    protocol: 'http', 
    apiPort: 3030 
}; 

export const server { 
    port: 8080 
}; 

Импорт:

import common from 'config'; 

common; // do something with common 
// server is not included in the bundle 

Вы можете установить бета-версию с помощью тока номер версии:

npm install [email protected] 

В качестве альтернативы вы также можете h ave посмотрите на rollup.js, который поддерживает это от get go (а также производит несколько меньшие пакеты). Он поддерживает только синтаксис ES2015.

+0

Я установил webpack 2, но он не трясет дерево. Я подозреваю, что проблема связана с установленными пресетами или плагинами. Ниже представлен мой .babelrc '{ « пресеты »: [« реакция »,« es2015 »,« stage-0 »,« es2015-free »,« es2015-native-modules »], « плагины »: [ "спектрально-выполнения", "спектрально-декораторы-наследие", "преобразования класса-свойства" ], "sourceMaps": истинные, "retainLines": правда } '' –

+0

Удалить es2015' и 'es2015 -loose', иначе ваш 'import' будет передан в 'require();' s. – nils

+0

Я не могу удалить es2015, потому что serveride на nodejs выдает ошибку SyntaxError: Неожиданный импорт токена –