2016-04-02 2 views
0

Я устанавливаю проект React + Webpack. Для создания первоначального пакета требуется 60 секунд, а 1s - добавление инкрементных изменений, но у меня даже еще нет кода приложения! Кажется, что пакет node_modules очень дорог. Я попытался расщеплять, используя общие куски, но это не улучшало производительность.Webpack: скомпилированный поставщик и код приложения

Как я могу сделать пакет Webpack node_modules только один раз и даже не следить за изменениями в этом каталоге?

+0

Вы смотрели в [DLL] (https: // WebPack .github.io/документы/наращивание performance.html # динамически связана библиотека) S? Такой подход позволит вам генерировать DLL один раз и обновлять его всякий раз, когда ваши зависимости поставщиков происходят. Это может избежать большой работы. –

+0

Да, я видел DLL, но мне не удалось заставить их работать. Можете ли вы привести пример, как я могу достичь полного пакета node_modules, которые строятся только один раз? – user3409950

+0

Я попробую что-нибудь сделать. В настоящее время онлайн-примеры [1] (https://github.com/webpack/webpack/tree/master/examples/dll) и [2] (https://github.com/webpack/webpack/tree/master/examples/dll-user) - ваш лучший выбор. Там что-то отсутствует? –

ответ

2

Если это проблема, вам не нужно связывать внешние зависимости в вашем проекте. Вы можете добавить их в качестве внешних зависимостей. Для этого, конечно, вы должны добавить скрипты на свою страницу.

Допустим, вы добавляете скрипты реагировать и реагировать-Dóm на страницу, в конфигурационном файле WebPack можно добавить:

{ 
    externals: { 
    'react': 'React', 
    'react-dom': 'ReactDOM' 
    } 
} 

Что это говорит Webpack это каждый раз, когда вам требуется («реагируют») или webpack вернет глобальную переменную под названием React. То же самое, если вам нужно («реакция-dom»)

И для каждого загрузчика вы должны либо включать файлы, которые хотите, либо исключать файлы, которые вам не нужны.

Вот пример исключая node_modules:

{ 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx?/, 
     exclude: /node_modules/, 
     loader: 'babel' 
     } 
    ] 
    } 
} 

Или еще более производительным, вы можете просто включить файлы вам нужно:

{ 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx?/, 
     include: './src', 
     loader: 'babel' 
     } 
    ] 
    } 
} 
+0

Можно ли связать все внешние зависимости в 1 файл, чтобы веб-пакет мог заменить require («реагировать») на React из этого файла? – user3409950

+0

Вы можете с некоторой конфигурацией, но если вы это делаете, у вас все еще будут те же проблемы, с которыми вы столкнулись сегодня, и это веб-пакет, который должен связывать все ваши зависимости. – vintem

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