2017-10-16 69 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