由于 .env 文件,你能阻止 Webpack 捆绑无法访问的模块吗
Can you stop Webpack from bundling unreachable modules because of .env file
例如:
import axios from 'axios'
if(process.env.USE_AXIOS) {
axios.get("/");
}
在此 Axios 不应从 Webpack 中捆绑。
可能有几种方法来处理条件编译,但我知道它有效的一种方法是使用动态导入
// Just to not throw an exception in the snippet
const process = {
env:{
USE_AXIOS: false
}
}
// ------------------------------------------------
// Solution
if (process.env.USE_AXIOS) {
import('axios').then(({default: axios}) => {
if ('get' in axios) {
console.log('axios in use');
}
});
}
完整的代码示例在这里webpack-conditional-complation
您可以检查生成的代码
- 这里有一个 axios 捆绑在单独的文件中
- 这里是编译后的 ./src/include-axios-base-on-env.js 到 with-axios.js 带有标志 USE_AXIOS=true
- 这里是编译后的 ./src/include-axios-base-on-env.js 到 without-axios.js 带有标志 USE_AXIOS=false
例如:
import axios from 'axios'
if(process.env.USE_AXIOS) {
axios.get("/");
}
在此 Axios 不应从 Webpack 中捆绑。
可能有几种方法来处理条件编译,但我知道它有效的一种方法是使用动态导入
// Just to not throw an exception in the snippet
const process = {
env:{
USE_AXIOS: false
}
}
// ------------------------------------------------
// Solution
if (process.env.USE_AXIOS) {
import('axios').then(({default: axios}) => {
if ('get' in axios) {
console.log('axios in use');
}
});
}
完整的代码示例在这里webpack-conditional-complation
您可以检查生成的代码
- 这里有一个 axios 捆绑在单独的文件中
- 这里是编译后的 ./src/include-axios-base-on-env.js 到 with-axios.js 带有标志 USE_AXIOS=true
- 这里是编译后的 ./src/include-axios-base-on-env.js 到 without-axios.js 带有标志 USE_AXIOS=false