2017-01-05 14 views
0

Мне нужно отключить AMD на 4 файлах и загрузить video.js прежде, чем загрузить другие 3 файла, потому что они зависят от него. Когда я попытался сделать это в webpack.config.js так:Как отключить AMD на 4 файлах и загрузить их в порядке с webpack

const path = require('path') 
const webpack = require('webpack') 

module.exports = { 
    entry: './src/main.js', 
    output: { 
    path: __dirname + '/public', 
    filename: 'bundle.js' 
    }, 
    devServer: { 
    inline: true, 
    contentBase: './src', 
    port: 3333 
    }, 
    plugins: [ 
    new webpack.DefinePlugin({ 
     'process.env': { 
     'NODE_ENV': JSON.stringify('production') 
     } 
    }) 
    ], 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules|lib/, 
     loader: 'babel', 
     query: { 
      presets: ['es2015', 'react', 'stage-2'], 
      plugins: ['transform-class-properties'] 
     } 
     }, 
     { 
     test: /\.json$/, 
     loader: 'json-loader' 
     }, 
     { 
     test: /[\/\\]lib[\/\\](video|playlist|vpaid|overlay)\.js$/, 
     exclude: /node_modules|src/ 
     loader: 'imports?define=>false' 
     } 
    ] 
    } 
} 

Это действительно не работает, потому что он просто загружает video.js (с отключенным AMD) и полностью игнорирует другие 3 файлов.

Моя структура папок следующим образом:

▾ lib/ 
    overlay.js 
    playlist.js 
    video.js 
    vpaid.js 
▸ node_modules/ 
▾ public/ 
    200.html 
    bundle.js 
▾ src/ 
    App.js 
    index.html 
    main.js 
    LICENSE 
    package.json 
    README.md 
    webpack.config.js 

Теперь, я нашел то, что берет меня один шаг назад, потому что теперь даже video.js не нагрузка:

require('imports?define=>false!../lib/video.js') 
require('imports?define=>false!../lib/playlist.js') 
require('imports?define=>false!../lib/vpaid.js') 
require('imports?define=>false!../lib/overlay.js') 

и вместо этого просто бросает эти предупреждения:

WARNING in ./~/imports-loader?define=>false!./lib/video.js 
Critical dependencies: 
15:415-422 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results. 
@ ./~/imports-loader?define=>false!./lib/video.js 15:415-422 

WARNING in ./~/imports-loader?define=>false!./lib/playlist.js 
Critical dependencies: 
10:417-424 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results. 
@ ./~/imports-loader?define=>false!./lib/playlist.js 10:417-424 

WARNING in ./~/imports-loader?define=>false!./lib/vpaid.js 
Critical dependencies: 
4:113-120 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results. 
@ ./~/imports-loader?define=>false!./lib/vpaid.js 4:113-120 

WARNING in ./~/imports-loader?define=>false!./lib/overlay.js 
Critical dependencies: 
10:416-423 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results. 
@ ./~/imports-loader?define=>false!./lib/overlay.js 10:416-423 

Итак, вопрос в том, как я могу сделать эта работа в webpack.config.js, чтобы я не получил эти предупреждения?

+0

Показывает, что ваша структура папок и способ, которым вам требуются эти файлы, также могут быть полезны. –

+0

, так как я могу решить свою проблему? – codepreneur

ответ

1

Я решил проблему! Для того, чтобы сделать эту работу вам это нужно:

{ 
    test: /[\/\\]lib[\/\\](video|playlist|vpaid|overlay)\.js$/, 
    exclude: /node_modules|src/ 
    loader: 'imports?define=>false' 
    } 

и это

require('script-loader!../lib/video.js') 
require('script-loader!../lib/playlist.js') 
require('script-loader!../lib/vpaid.js') 
require('script-loader!../lib/overlay.js') 

вместе!

Теперь, если вы используете это (вместо сценария погрузчиком):

require('imports?define=>false!../lib/video.js') 
require('imports?define=>false!../lib/playlist.js') 
require('imports?define=>false!../lib/vpaid.js') 
require('imports?define=>false!../lib/overlay.js') 

Это не сработает! (вам нужны как импорт-загрузчик, так и скрипт-загрузчик, работающие в унисон.