2017-02-20 8 views
1

So code splitting является метод создания различных пучков - так приложение, производитель и т.д ...Webpack с использованием node_modules в поставщика куске без явного указания их

Я знаю, что я хочу в моем vendor пачки, но только по соглашению .. .

Все

import x from 'name'; 
import 'name'; 

они должны быть в vendor, потому что (я думаю, что они являются), очевидно, исходя из node_modules.

Однако я видел только примеры явного указания этого.

Есть ли способ использования конвенции?

Если нет, могу ли я создать плагин для этого (этот плагин мог бы просто перейти в раздел зависимостей от package.json)?

ответ

3

Что вы можете сделать это:

const pkg = require('./package.json');

и в конфигурации:

{ 
    entry: { 
     vendor: Object.keys(pkg.dependencies) // use node_module dependencies 
    }, 
    plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor" 
    }) 
    ] 
} 

EDIT: Кажется, есть лучший способ сделать это. В плагине CommonsChunkPlugin можно использовать свойство minChunks. Вы можете передать функцию там, как например:

plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor", 
     minChunks: ({ resource }) => { 
      return resource && resource.match(/\.js$/) && resource.indexOf('node_modules') >= 0; 
     } 
    }) 
] 

Делая это, вы не должны полагаться на список package.json и WebPack будет рассматривать только зависимости, используемые в проекте. аккуратный.

+0

чувствует себя немного странно, чтобы сделать это, но работает - так прекрасно со мной :) –

+0

@CallumLinington проверить мой обновленный ответ, я нашел другой способ –

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

  • Нет связанных вопросов^_^