我正在尝试部分导入lodash以在webpack / typescript / react环境中工作以减少bundle大小。我正在使用lodash@4.17.4
和webpack@2.4.1
我知道我不应该像这样导入lodash,因为它会导入整个lodash库:
import * as lodash from 'lodash';
lodash.clone({});
所以我尝试了这个:
import { clone, create } from 'lodash';
但是这仍然会导入整个库,而不仅仅是我需要的函数(bundlesize不会改变)。 所以我读了一下,看到了这个:
import clone = require('lodash/clone');
这实际上有效,只有我需要的功能才能导入,而我的捆绑缩小了几百KB。但不幸的是,打字稿给了我以下错误(仅在构建软件包时显示错误,在运行watch / webDev-Server时一切正常):
Import assignment cannot be used when targeting ECMAScript 2015 modules. Consider using 'import * as ns from "mod"', 'import {a} from "mod"', 'import d from "mod"', or another module format instead.
这是因为我的打字稿配置中有"target":"es5"
吗?如果是这样,我怎么能用es5模块作为目标来实现部分导入呢?
我的打字稿配置如下:
{
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"declaration": false,
"noImplicitAny": false,
"noImplicitReturns": false,
"removeComments": true,
"strictNullChecks": false,
"outDir": "build",
"lib": [
"es6",
"es7",
"dom"
]
},
"exclude": [
"dist",
"build",
"node_modules",
"bower_components"
]
}
有什么想法吗?
修改 当我做一个常规的要求时:
const clone = require('lodash/clone');
一切都编译没有错误(手表和构建)。这是导入最新版本的lodash的正确方法吗?这似乎不对
答案 0 :(得分:0)
我导入lodash
import { clone } from 'lodash/clone'