From 4d1787be880d5ebbddf3c162926f5af65998c7f9 Mon Sep 17 00:00:00 2001 From: Dylan Piercey Date: Tue, 17 Mar 2020 13:57:06 -0700 Subject: [PATCH] fix: optimize component registration for top level stateful components (#36) --- .../__snapshots__/browser-A--test_YDNP.A.js | 17 +---------------- .../__snapshots__/browser-B--test_YDNP.B.js | 17 +---------------- .../__snapshots__/browser-C--test_YDNP.C.js | 17 +---------------- .../__snapshots__/browser--test_nzzJ.js | 17 +---------------- src/loader/index.ts | 19 +++++++++++++------ 5 files changed, 17 insertions(+), 70 deletions(-) diff --git a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-A--test_YDNP.A.js b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-A--test_YDNP.A.js index 00fd4dc..8e094e8 100644 --- a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-A--test_YDNP.A.js +++ b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-A--test_YDNP.A.js @@ -52,11 +52,7 @@ marko_template.Component = marko_defineComponent(marko_component, marko_template /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { - - const { register } = __webpack_require__(/*! marko/components */ "marko/components"); - const component = __webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); - register("/@marko/webpack-tests$x.x.x/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko", component); - +__webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); __webpack_require__(/*! ./style.css */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/style.css"); /***/ }), @@ -109,17 +105,6 @@ __webpack_require__(/*! ./components/nested/index.marko?dependencies */ "./src/_ -/***/ }), - -/***/ "marko/components": -/*!***********************************!*\ - !*** external "marko/components" ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = marko/components; - /***/ }), /***/ "marko/dist/runtime/components/defineComponent": diff --git a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-B--test_YDNP.B.js b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-B--test_YDNP.B.js index 04dc1b9..df97eeb 100644 --- a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-B--test_YDNP.B.js +++ b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-B--test_YDNP.B.js @@ -52,11 +52,7 @@ marko_template.Component = marko_defineComponent(marko_component, marko_template /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { - - const { register } = __webpack_require__(/*! marko/components */ "marko/components"); - const component = __webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); - register("/@marko/webpack-tests$x.x.x/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko", component); - +__webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); __webpack_require__(/*! ./style.css */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/style.css"); /***/ }), @@ -109,17 +105,6 @@ __webpack_require__(/*! ./components/nested/index.marko?dependencies */ "./src/_ -/***/ }), - -/***/ "marko/components": -/*!***********************************!*\ - !*** external "marko/components" ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = marko/components; - /***/ }), /***/ "marko/dist/runtime/components/defineComponent": diff --git a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-C--test_YDNP.C.js b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-C--test_YDNP.C.js index 3df862c..c458323 100644 --- a/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-C--test_YDNP.C.js +++ b/src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/__snapshots__/browser-C--test_YDNP.C.js @@ -52,11 +52,7 @@ marko_template.Component = marko_defineComponent(marko_component, marko_template /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { - - const { register } = __webpack_require__(/*! marko/components */ "marko/components"); - const component = __webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); - register("/@marko/webpack-tests$x.x.x/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko", component); - +__webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/index.marko"); __webpack_require__(/*! ./style.css */ "./src/__tests__/fixtures/with-class-component-plugin-dynamic-bundle/components/nested/style.css"); /***/ }), @@ -109,17 +105,6 @@ __webpack_require__(/*! ./components/nested/index.marko?dependencies */ "./src/_ -/***/ }), - -/***/ "marko/components": -/*!***********************************!*\ - !*** external "marko/components" ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = marko/components; - /***/ }), /***/ "marko/dist/runtime/components/defineComponent": diff --git a/src/__tests__/fixtures/with-class-component-plugin/__snapshots__/browser--test_nzzJ.js b/src/__tests__/fixtures/with-class-component-plugin/__snapshots__/browser--test_nzzJ.js index 70dd3ec..0d0910e 100644 --- a/src/__tests__/fixtures/with-class-component-plugin/__snapshots__/browser--test_nzzJ.js +++ b/src/__tests__/fixtures/with-class-component-plugin/__snapshots__/browser--test_nzzJ.js @@ -50,11 +50,7 @@ marko_template.Component = marko_defineComponent(marko_component, marko_template /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { - - const { register } = __webpack_require__(/*! marko/components */ "marko/components"); - const component = __webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin/components/nested/index.marko"); - register("/@marko/webpack-tests$x.x.x/fixtures/with-class-component-plugin/components/nested/index.marko", component); - +__webpack_require__(/*! ./index.marko */ "./src/__tests__/fixtures/with-class-component-plugin/components/nested/index.marko"); __webpack_require__(/*! ./style.css */ "./src/__tests__/fixtures/with-class-component-plugin/components/nested/style.css"); /***/ }), @@ -107,17 +103,6 @@ __webpack_require__(/*! ./components/nested/index.marko?dependencies */ "./src/_ -/***/ }), - -/***/ "marko/components": -/*!***********************************!*\ - !*** external "marko/components" ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = marko/components; - /***/ }), /***/ "marko/dist/runtime/components/defineComponent": diff --git a/src/loader/index.ts b/src/loader/index.ts index 5705817..4741bae 100644 --- a/src/loader/index.ts +++ b/src/loader/index.ts @@ -92,7 +92,6 @@ export default function(source: string): string { babelConfig.caller ); - const dependenciesOnly = this.resource.endsWith("?dependencies"); const hydrate = this.resource.endsWith("?hydrate"); const assets = this.resource.endsWith("?assets"); let sourceMaps = @@ -163,14 +162,22 @@ export default function(source: string): string { this.addDependency(dep) ); + const dependenciesOnly = this.resource.endsWith("?dependencies"); let dependencies = []; if (dependenciesOnly && meta.component) { - dependencies = dependencies.concat(` - ${loadStr("marko/components", "{ register }")} - ${loadStr(meta.component, "component")} - register(${JSON.stringify(meta.id)}, component); - `); + if ( + path.join(path.dirname(this.resourcePath), meta.component) === + this.resourcePath + ) { + dependencies.push(loadStr(meta.component)); + } else { + dependencies = dependencies.concat(` + ${loadStr("marko/components", "{ register }")} + ${loadStr(meta.component, "component")} + register(${JSON.stringify(meta.id)}, component); + `); + } } if (meta.deps) {