webpack导入所有代码而不是某些函数

Ale*_*mov 2 javascript webpack ramda.js

我有这样非常简单的webpack配置:

var path = require('path');

module.exports = {
  entry: {
    test: "./index.js"
  },
  output: {
    filename: '[name].js',
    path: path.resolve(__dirname, 'dist')
  }
};
Run Code Online (Sandbox Code Playgroud)

在我的文件index.js中我正在使用Ramda编写一些代码,我将其导入如下:

import { compose, head, tail } from 'ramda';
Run Code Online (Sandbox Code Playgroud)

后来我正在使用构建webpack -p.几行代码我的构建是59,2Kb,当我使用时,webpack-bundle-analyzer我看到所有函数都在bundle中 - 整个Ramda库.如果我正在导入

import ramda from 'ramda';
Run Code Online (Sandbox Code Playgroud)

我有相同的捆绑大小.这是为什么?我究竟做错了什么?我正在使用最新的webpack版本3.5.5.谢谢

Joe*_*lay 5

Ramda本身并没有使用ES2015模块,因此Webpack无法对其进行树抖动.

在此期间,您可以导入单个模块,如下所示:

import compose from "ramda/src/compose";
import head from "ramda/src/head";
import tail from "ramda/src/tail";
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用babel-plugin-ramda,它会分析您的代码以确定您实际使用的Ramda函数并删除其余部分.