我仅从语义用户界面反应中导入一个组件
import { Button as SemanticButton} from 'semantic-ui-react';
但是运行webpack -p
后,我在捆绑软件中看到了来自语义UI的所有组件,其大小超过300KB(没有语义UI时约为30KB)。
我安装了所有最新版本:webpack@4.14.0;语义ui-react@0.81.3
这是我的webpack.config.js
module.exports = {
entry: './src/index.js',
resolve: {
modules: [
path.resolve('./'),
'node_modules',
],
extensions: ['*', '.js', '.jsx', '.css', '.less'],
},
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
},
},
],
},
externals: {
react: {
root: 'React',
commonjs: 'react',
commonjs2: 'react',
amd: 'React',
},
'react-dom': {
root: 'ReactDOM',
commonjs: 'react-dom',
commonjs2: 'react-dom',
amd: 'ReactDOM',
},
'prop-types': {
root: 'PropTypes',
commonjs: 'prop-types',
commonjs2: 'prop-types',
amd: 'PropTypes',
},
},
};
我做错什么了吗?如何通过语义UI反应使摇树工作?我不想在捆绑包中看到未使用的组件。
答案 0 :(得分:0)
该问题的解决方案变得非常简单。您只需要正确配置Babel。
在babel-preset-env配置中仅指定
"modules": false
即可使Babel表现出我们想要的行为,这使webpack可以分析您的依赖关系树并摆脱那些未使用的依赖关系。此外,此过程不会引起兼容性问题,因为webpack最终会将您的代码转换为广泛兼容的格式。
所以.babelrc
看起来像这样:
{
"presets": [
["env", {
"modules": false
}]
]
}