2016-11-23 101 views
0

我試圖從RequireJs切換到webpack來處理js加載,sass處理&其他類似的東西。如何在webpack中指定解析器依賴關係?

在RequireJs有可能對模塊

// file.js 
require(['moduleA','moduleB'],function(A,B) { 
    ... 
} 

指定依賴,我想指定moduleA需要例如

// requirejs.config.js 
require.config({ 
    ... 
    shim:{ 
     moduleA:{ 
      deps:['jquery'] 
     } 
    } 
}) 

我試圖找到一種方式做同樣的jQuery在webpack

// webpack.config.js 
module.exports = { 
    entry: toObject(glob.sync('src/**/*.js*')), 
    output: { 
     path: './bin', 
     filename: '[name].js' 
    }, 
    resolve: { 
     alias: { 
      'moduleA': '/path/to/moduleA', 
      ... 
     } 
    } 
}; 

function toObject(paths) { 
    // I return an object of paths 
} 

但我找不到一種方式來指定該模塊eA需要另一個模塊!

有沒有人有這方面的線索?

回答

1

你不需要。你只需要require()你需要什麼模塊,它就可以使用。

您需要使用RequireJS來做到這一點的原因是RequireJS是異步的,模塊是異步加載的,因此它需要知道要先加載什麼。 Webpack(和通用的CommonJS)是同步的。當你進入模塊時,所有的東西都已經加載完畢。

+0

謝謝你的回答。如果我理解,這意味着如果我的moduleA需要一個moduleB需要一個moduleC,那麼我只需要moduleB中的moduleC和moduleA中的moduleB? – jiboulex

+0

這完全正確。 –

+0

但如果我需要('bootstrap/js/collapse');並崩潰需要Jquery,我不能編輯我的供應商文件,以指定引導js需要jQuery,我得到了「jsone.js:10515未捕獲的ReferenceError:jQuery沒有定義(...)」 – jiboulex