2017-10-16 42 views
0

我試圖有條件地使用webpack導入js中的東西。考慮以下幾點:Webpack保存要求

fetch.js

const findFetch =() => { 
    if (window.process && window.process.electron) { 
    // electron (requirement to use node-fetch here) 
    return require('node-fetch') 
    } else if (window.fetch) { 
    // browser 
    return fetch 
    } 
    // old browser 
    return() => Promise.reject(
    new Error('Fetch api not available. Please update your browser!') 
) 
} 

export default findFetch() 

現在我不希望任何http捆綁到我的客戶端代碼(和其他節點模塊,隨之而來的是相關性)的。

有沒有辦法保留import/require?保留我的意思是不要混淆代碼的那部分,不改變它,只是把它保留原樣?

+0

我不完全確定你在問什麼。究竟是什麼問題?你需要幫助從客戶端代碼中分離出你的節點模塊嗎? –

+0

很抱歉,如果不清楚。我想保持require('node-fetch')'語句不變。 –

+0

然後將節點獲取模塊從其餘代碼中分離出來? –

回答

0

您可以使用條目選項指定使用webpack.config.js中的哪個軟件包進入哪個軟件包。

entry: { 
    app: "./src/app.js", 
    vendor: ["node-fetch", "more", "libraries", "go", "here"] 
}, 
output: { 
    filename: "[name].bundle.js", 
    path: path.resolve(__dirname) 
} 
plugins: { 
    new webpack.optimize.CommonsChunkPlugin("vendor") 
} 

上述代碼確保您獲得兩個捆綁包。一個名爲vendor.bundle.js的軟件包包含節點獲取和其他您希望包含的庫以及包含其他庫的包app.bundle.js