我正在尝试使用webpack在js中有条件地导入内容。请考虑以下事项:
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
(以及与该依赖关系一起提供的其他节点模块)捆绑到我的客户端代码中。
有没有办法保留导入/需求?保留我的意思是不要乱用代码的那一部分,不要改变它,只是保持它原样?
答案 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
的包,其中包含 node-fetch 和您想要包含的其他库,以及一个包含其余库的包含app.bundle.js
的包。