@scayle/storefront-product-listing 2.1.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @scayle/storefront-product-listing
2
2
 
3
+ ## 2.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Improved SEO handling for paginated product listing pages by setting the `noindex` robots meta tag for pages greater than 1.
8
+
9
+ Previously, all paginated PLPs (e.g., `/category?page=2`, `/category?page=3`) were set to `index, follow`, which causes index bloat by presenting thousands of structurally similar pages to search engines.
10
+ This change ensures only the first page of each listing is indexed, following SEO best practices.
11
+
12
+ ## 2.1.3
13
+
14
+ ### Patch Changes
15
+
16
+ - Cleaned up README.md and added CONTRIBUTING.md. No functional changes.
17
+
3
18
  ## 2.1.2
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -44,8 +44,6 @@ export default defineNuxtConfig({
44
44
  })
45
45
  ```
46
46
 
47
- ## Module Configuration
48
-
49
47
  ## License
50
48
 
51
49
  Licensed under the [MIT License](https://opensource.org/license/mit/)
@@ -61,12 +59,3 @@ Learn more about [SCAYLE’s architecture](https://scayle.dev/en/core-documentat
61
59
 
62
60
  - [LinkedIn](https://www.linkedin.com/company/scaylecommerce/)
63
61
  - [Jobs](https://careers.smartrecruiters.com/ABOUTYOUGmbH/scayle)
64
-
65
- <!-- Badges -->
66
-
67
- [npm-version-src]: https://img.shields.io/npm/v/@scayle/storefront-product-listing/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
68
- [npm-version-href]: https://npmjs.com/package/@scayle/storefront-product-listing
69
- [npm-downloads-src]: https://img.shields.io/npm/dm/@scayle/storefront-product-listing.svg?style=flat&colorA=18181B&colorB=28CF8D
70
- [npm-downloads-href]: https://npmjs.com/package/@scayle/storefront-product-listing
71
- [license-src]: https://img.shields.io/npm/l/@scayle/storefront-product-listing.svg?style=flat&colorA=18181B&colorB=28CF8D
72
- [license-href]: https://npmjs.com/package/@scayle/storefront-product-listing
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@scayle/storefront-product-listing",
3
3
  "configKey": "product-listing",
4
- "version": "2.1.2",
4
+ "version": "2.2.0",
5
5
  "compatibility": {
6
6
  "bridge": false,
7
7
  "nuxt": ">=3.13"
package/dist/module.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { defineNuxtModule, createResolver, addImportsDir } from '@nuxt/kit';
2
2
 
3
3
  const PACKAGE_NAME = "@scayle/storefront-product-listing";
4
- const PACKAGE_VERSION = "2.1.2";
4
+ const PACKAGE_VERSION = "2.2.0";
5
5
  const module = defineNuxtModule({
6
6
  meta: {
7
7
  name: PACKAGE_NAME,
@@ -7,7 +7,8 @@ import { useAppliedFilters } from "./useAppliedFilters.js";
7
7
  export function useProductListingSeoData(breadcrumbs, route, { baseUrl, fullPath }, isDefaultSortSelected) {
8
8
  const { areFiltersApplied } = useAppliedFilters(route);
9
9
  const robots = computed(() => {
10
- return !areFiltersApplied.value && toValue(isDefaultSortSelected) ? "index,follow" : "noindex,follow";
10
+ const pageNumber = Number(route.query.page) || 1;
11
+ return !areFiltersApplied.value && toValue(isDefaultSortSelected) && pageNumber === 1 ? "index,follow" : "noindex,follow";
11
12
  });
12
13
  const canonicalLink = computed(
13
14
  () => robots.value.includes("noindex") ? [] : [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scayle/storefront-product-listing",
3
- "version": "2.1.2",
3
+ "version": "2.2.0",
4
4
  "description": "Collection of essential composables and utilities to work with product listing",
5
5
  "author": "SCAYLE Commerce Engine",
6
6
  "license": "MIT",
@@ -41,29 +41,29 @@
41
41
  },
42
42
  "devDependencies": {
43
43
  "@arethetypeswrong/cli": "0.18.2",
44
- "@nuxt/kit": "3.19.3",
44
+ "@nuxt/kit": "3.20.0",
45
45
  "@nuxt/module-builder": "1.0.2",
46
- "@nuxt/schema": "3.19.3",
47
- "@nuxt/test-utils": "3.19.2",
48
- "@types/node": "22.18.11",
46
+ "@nuxt/schema": "3.20.0",
47
+ "@nuxt/test-utils": "3.20.1",
48
+ "@types/node": "22.18.13",
49
49
  "@vitest/coverage-v8": "3.2.4",
50
50
  "@vueuse/core": "13.9.0",
51
51
  "dprint": "0.50.2",
52
52
  "eslint-formatter-gitlab": "6.0.1",
53
- "eslint": "9.37.0",
53
+ "eslint": "9.38.0",
54
54
  "fishery": "2.3.1",
55
- "happy-dom": "20.0.7",
56
- "nuxt": "3.19.3",
57
- "publint": "0.3.14",
55
+ "happy-dom": "20.0.10",
56
+ "nuxt": "3.20.0",
57
+ "publint": "0.3.15",
58
58
  "schema-dts": "1.1.5",
59
59
  "typescript": "5.9.3",
60
60
  "unbuild": "3.6.1",
61
61
  "vitest": "3.2.4",
62
62
  "vue-router": "4.6.3",
63
- "vue-tsc": "3.1.1",
63
+ "vue-tsc": "3.1.2",
64
64
  "vue": "3.5.22",
65
- "@scayle/eslint-config-storefront": "4.7.10",
66
- "@scayle/storefront-nuxt": "8.45.1",
65
+ "@scayle/eslint-config-storefront": "4.7.11",
66
+ "@scayle/storefront-nuxt": "8.47.0",
67
67
  "@scayle/vitest-config-storefront": "1.0.0"
68
68
  },
69
69
  "scripts": {