2016-09-14 61 views
2

我使用Browserify与Babel和Gulp。 目前我的项目只需要很少的部分lodash,我不想加载整个模块。根据需求加载模块

import assignIn from 'lodash/assignin'; 
import isPlainObject from 'lodash/isplainobject'; 
import isFunction from 'lodash/isfunction'; 

上面的代码工作正常,但有点耗时,我不得不重复指定整个路径。 不会是好,如果这是可以做到的:

import {assignIn, isPlainObject, isFunction} as _ from 'loadash'; 

,并以此为_.assignIn。我也可以得到命名空间_。 我做错了什么是另一种做法或这是唯一的方法。

回答

3

如果您可以使用babel-plugin-lodash插件,它几乎可以满足您的需求。

相反的:

import assignIn from 'lodash/assignin'; 
import isPlainObject from 'lodash/isplainobject'; 
import isFunction from 'lodash/isfunction'; 

你可以使用:

import _ from 'lodash'; 

,并从browserify输出将被改造。

例如:

import _ from 'lodash'; 

function Foo() { 
    this.a = 1; 
} 

Foo.prototype.b = 2; 

_.assignIn({ 'a': 0 }, new Foo); 

_.isPlainObject({}); 

_.isFunction(/abc/); 

无插件:

var _lodash = require('lodash'); 

var _lodash2 = _interopRequireDefault(_lodash); 

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 
... 

与插件:

var _isFunction2 = require('lodash/isFunction'); 

var _isFunction3 = _interopRequireDefault(_isFunction2); 

var _isPlainObject2 = require('lodash/isPlainObject'); 

var _isPlainObject3 = _interopRequireDefault(_isPlainObject2); 

var _assignIn2 = require('lodash/assignIn'); 

var _assignIn3 = _interopRequireDefault(_assignIn2); 

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 
... 
+0

感谢您的时间。但仍然有一些我会失踪。 'lodash'有可用的转换,其他依赖关系如何。 –