2016-09-04 14 views
1

Я новичок в Rollup - rollupjs.org - и не понимаю, почему удаляются экспортируемые значения; вероятно, путем treeshaking во время свертывания.Почему rollup.js не включает - исключительно - экспортированные значения в своем выходе?

У меня есть data.json с некоторыми основными данными, которые я хочу, чтобы обеспечить как часть модуля:

{ 
    "colors": ["red", "green", "blue"], 
    "shapes": ["circle", "triangle", "square"] 
} 

... и модуль, который будет их экспорт:

import { colors, shapes } from './data.json'; 

function run() { 
    console.log('Run, Forest, Run.'); 
} 

export default run; 

export { 
    colors, 
    shapes 
}; 

Разве rollup.js не распознает экспортные заявления как считающиеся «используемыми», поэтому все, что находится исключительно в нем, будет «выведено из строя» из вывода?

+0

Пожалуйста, покажите нам, как вы импортируете этот модуль, как вы вызываете Rollup в своем приложении и как выглядит результат. – Bergi

ответ

2

Если модуль ввода экспортирует colors и shapes, это считается «использованием» этих значений. Если какой-либо внутренний модуль экспортирует их, они будут включены только в том случае, если другой модуль импортирует colors или shapes и использует их.

Здесь demonstration of the first case (модуль ввода экспортирует значения), а здесь demonstration of the second case (значения экспортируются not-main.js).

Если это не то, что происходит в вашем случае, возможно, вы столкнулись с ошибкой, и в этом случае, пожалуйста, file an issue!

+0

Спасибо за ответ. Вы правы, rollup.js выполняет как следует; Я думаю, что я терялся в своих слоях абстракции - слишком много косвенности - видеть, что я экспортировал правильные «вещи», но на неправильном уровне. Как только я переместил экспорт в правильное место, теперь все работает правильно. – kalisjoshua