Дублированные компоненты в комплекте
У меня есть проект на react / typescript с webpack 2 и различными компонентами, на которые ссылается основной модуль извне с индексными файлами. Вот тестовый проект:
Uploadfiles.io - duplicatedcomponentsinbundle.zip[^]
Сверток находится in:TestReactTs\Scripts\App\portal.bundle.js
Здравствуйте. tsx - это мой основной компонент, код выглядит так:
import * as React from "react"; import { HomeC2L1 } from "./components2" import { HomeL3 } from "./components1/components1_level2/components1_level3/homel3" export interface HelloProps { compiler: string; framework: string; } export class Hello extends React.Component<HelloProps, {}> { render() { return ( <div> <h1>Hello from React {this.props.compiler} {this.props.framework}</h1> <HomeC2L1 /> <HomeL3/> </div> ); } }
где HomeC2L1 включает HomeL3.
Это первое происшествие под номером 11 в связке:
/* 11 */ /*!*************************************************************************************!*\ !*** ./dist/components/components1/components1_level2/components1_level3/homeL3.js ***! \*************************************************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var React = __webpack_require__(/*! react */ 1); var HomeL3 = (function (_super) { __extends(HomeL3, _super); function HomeL3() { _super.apply(this, arguments); } HomeL3.prototype.render = function () { return (React.createElement("div", null, React.createElement("h2", null, "this is home Level3") )); }; return HomeL3; }(React.Component)); exports.HomeL3 = HomeL3; //# sourceMappingURL=homeL3.js.map /***/ },
И второе совпадение одного и того же компонента homeL3 под номером 16:
/* 16 */ /*!*************************************************************************************!*\ !*** ./dist/components/components1/components1_level2/components1_level3/homel3.js ***! \*************************************************************************************/ /***/ function(module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var React = __webpack_require__(/*! react */ 1); var HomeL3 = (function (_super) { __extends(HomeL3, _super); function HomeL3() { _super.apply(this, arguments); } HomeL3.prototype.render = function () { return (React.createElement("div", null, React.createElement("h2", null, "this is home Level3") )); }; return HomeL3; }(React.Component)); exports.HomeL3 = HomeL3; //# sourceMappingURL=homeL3.js.map /***/ }
Есть ли способ автоматически удалить эти дубликаты, такие как плагин webpack или что-то в этом роде?
Есть ли плагин, который делает эту работу правильно и как его настроить?
Заранее спасибо. Добрый день!
Что я уже пробовал:
Я добавил плагин dedupe в webpack. config / он делает некоторую оптимизацию, но не решает проблему дублирования моих компонентов (на некоторых сайтах есть информация, что dedupe устарел в webpack 2. действительно ли он устарел или нет?). Попробовал также плагин commonchunks.