小编ArS*_*SeN的帖子

如何使用带有依赖项的 CommonJS 模块使用 webpack 和 ES6?

我正在使用 laravel 开发一个项目,该项目使用(因为它是默认的)webpack 来捆绑其资产。在那里,我确实依赖于一个包,而该包又依赖于 lodash 和 deepdash。

由于 deepdash 是作为 lodash 的 mixin 提供的,因此它的用法(根据文档)如下所示:

// load Lodash if you need it
const _ = require('lodash');
//mixin all the methods into Lodash object
require('deepdash')(_);
Run Code Online (Sandbox Code Playgroud)

或者,如果您想使用 ES6 语法(至少这是我的理解),它将转换为:

import _ from 'lodash';
import deepdash from 'deepdash';

deepdash(_);
Run Code Online (Sandbox Code Playgroud)

完成后,我正在尝试使用 webpack 创建一个包,以便在浏览器中使用。我的问题是,由于某种原因,webpack 似乎用一些“__webpack_require__”魔法功能替换了 lodash 的导入,这导致 lodash 不再是一个函数,浏览器说: 在此处输入图片说明

为了更好地演示我的问题,我创建了一个演示 github 存储库,只是尝试 webpack deepdash 和 lodash:ArSn/webpack-deepdash这是浏览器抱怨的行:https : //github.com/ArSn/webpack-deepdash/blob /master/dist/main.js#L17219

我在大量添加 babel 配置方面玩了很多,感觉我最好的镜头是插件babel-plugin-transform-commonjs-es2015-modules。我试过了,结果还是一样。

我觉得要么我对情况有很深的误解,要么我错过了一件小事。然而,对于我的一生,我无法弄清楚它是哪一个,它是什么。

旁注:

  • 我知道还有一个 ES6 版本的 deepdash,显然当使用这两个时,webpack 机制工作正常(正如在 …

javascript commonjs ecmascript-6 lodash webpack

5
推荐指数
1
解决办法
1991
查看次数

所有工厂方法都应该公开吗?

根据spryker/architecture-sniffer中的规则:

默认情况下,所有工厂方法都应该是公共的

这有什么好的论据吗?我以前在使用工厂模式时从未偶然发现过这一点。

design-patterns factory spryker

1
推荐指数
1
解决办法
327
查看次数