{"id":228273,"date":"2022-10-15T14:40:00","date_gmt":"2022-10-15T11:40:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228273"},"modified":"2022-11-09T01:37:28","modified_gmt":"2022-11-08T22:37:28","slug":"configuracion-adicional-para-webpack","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/configuracion-adicional-para-webpack\/","title":{"rendered":"Configuraci\u00f3n adicional para webpack"},"content":{"rendered":"\n<p>Este art\u00edculo se basa en el <code>webpack.config.js<\/code>archivo que creamos en el art\u00edculo <a href=\"https:\/\/wholesomecode.ltd\/articles\/extending-the-wordpress-create-block-script-webpack-config\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ampliaci\u00f3n de la configuraci\u00f3n del paquete web de WordPress Create Block Script<\/a>. Si no ha le\u00eddo ese art\u00edculo, es posible que desee leerlo r\u00e1pidamente.<\/p>\n<p><strong>Este art\u00edculo es para una versi\u00f3n anterior de Create Block Script<\/strong><\/p>\n<p>Aunque la teor\u00eda a\u00fan se puede aplicar, es posible que parte de la informaci\u00f3n de este art\u00edculo ya no sea compatible con el \u00faltimo script de creaci\u00f3n de bloques. Puede <a href=\"https:\/\/wholesomecode.ltd\/guides\/creating-plugin-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ver nuestra gu\u00eda actualizada de creaci\u00f3n de secuencias de comandos de bloques aqu\u00ed<\/a>.<\/p>\n<p>Tambi\u00e9n tenemos una gu\u00eda actualizada sobre c\u00f3mo <a href=\"https:\/\/wholesomecode.ltd\/guides\/entry-points-wordpress-create-block-script\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">agregar puntos de entrada adicionales al paquete web<\/a>.<\/p>\n<h2>Compatibilidad con CSS Cross Browser con Polyfills y Prefixes<\/h2>\n<p>Antes de comenzar, quiero dar cr\u00e9dito a <a href=\"https:\/\/jeffreycarandang.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jeffrey Carandang<\/a> por su incre\u00edble <a href=\"https:\/\/jeffreycarandang.com\/create-gutenberg-block-plugin-wp-scripts-postcss-build\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">art\u00edculo sobre el uso de PostCSS con webpack<\/a>, en el que me inspir\u00e9 para esta secci\u00f3n del art\u00edculo.<\/p>\n<p>Para admitir polyfills y prefijos de navegadores cruzados, usaremos el <code>postcss-loader<\/code>paquete npm para cargar el complemento <code>[postcss-preset-env](https:\/\/www.npmjs.com\/package\/postcss-preset-env)<\/code>.<\/p>\n<p>Asegur\u00e1ndose de que estamos <code>cd<\/code>en la ra\u00edz de nuestro complemento, ejecute lo siguiente para instalar estos dos paquetes.<\/p>\n<pre><code>npm install postcss-loader postcss-preset-env --save-dev\n<\/code><\/pre>\n<p>A continuaci\u00f3n, debemos ampliar nuestro <code>\/webpack.config.js<\/code>para incluir la configuraci\u00f3n de estos dos paquetes:<\/p>\n<pre><code>const defaultConfig = require( '@wordpress\/scripts\/config\/webpack.config' );\nconst IgnoreEmitWebPackPlugin = require( 'ignore-emit-webpack-plugin' );\nconst MiniCssExtractPlugin = require( 'mini-css-extract-plugin' );\nconst postcssPresetEnv = require( 'postcss-preset-env' );\nconst production = 'development' !== process.env.NODE_ENV;\n\nmodule.exports = {\n    ...defaultConfig,\n    module: {\n        ...defaultConfig.module,\n        rules: [\n            ...defaultConfig.module.rules,\n            {\n                test: \/.s[ac]ss$\/i,\n                use: [\n                    { loader: MiniCssExtractPlugin.loader },\n                    { loader: 'css-loader' },\n                    {\n                        loader: 'postcss-loader',\n                        options: {\n                            plugins:() =&gt; [ postcssPresetEnv( { stage: 3 }) ],\n                        },\n                    },\n                    { loader: 'sass-loader' },\n                ],\n            },\n        ],\n    },\n    optimization: {\n        ...defaultConfig.optimization,\n        splitChunks: {\n            cacheGroups: {\n                editor: {\n                    chunks: 'all',\n                    enforce: true,\n                    name: 'editor',\n                    test: \/editor.s[ac]ss$\/i,\n                },\n                style: {\n                    chunks: 'all',\n                    enforce: true,\n                    name: 'style',\n                    test: \/style.s[ac]ss$\/i,\n                },\n                default: false,\n            },\n        },\n    },\n    plugins: [\n        ...defaultConfig.plugins,\n        new MiniCssExtractPlugin( {\n            filename: '..\/[name].css',\n        } ),\n        new IgnoreEmitWebPackPlugin( [ 'editor.js', 'style.js' ] ),\n    ],\n};\n\nif (production) {\n    module.exports.devtool = false;\n}\n<\/code><\/pre>\n<p>Tenga en cuenta las modificaciones en las l\u00edneas 4 y 18.<\/p>\n<h3>Probando el Autoprefixer<\/h3>\n<p>Agreguemos algo de c\u00f3digo a nuestro <code>\/src\/sass\/style.scss<\/code>archivo para probar la funci\u00f3n de autoprefixer del complemento PostCSS. Insertar\u00e9 algunas reglas <code>::placeholder<\/code>en el archivo, que a\u00fan no tiene compatibilidad completa con el navegador.<\/p>\n<pre><code>::placeholder {\n    color: #f00;\n}\n<\/code><\/pre>\n<p>En nuestro archivo compilado <code>\/style.css<\/code>ahora se muestra lo siguiente:<\/p>\n<pre><code>::-webkit-input-placeholder {\n  color: #f00; }\n\n::-moz-placeholder {\n  color: #f00; }\n\n:-ms-input-placeholder {\n  color: #f00; }\n\n::-ms-input-placeholder {\n  color: #f00; }\n\n::placeholder {\n  color: #f00; }\n<\/code><\/pre>\n<h3>Probando los Polyfills<\/h3>\n<p>Agreguemos algo de c\u00f3digo a nuestro <code>\/src\/sass\/style.scss<\/code>archivo para probar la funci\u00f3n polyfill del complemento PostCSS. Insertar\u00e9 algunas reglas para la <code>all<\/code>propiedad (que restablece las propiedades de los elementos) en el archivo, que a\u00fan no tiene soporte completo para el navegador.<\/p>\n<p>En nuestro archivo compilado <code>\/style.css<\/code>ahora se muestra lo siguiente:<\/p>\n<pre><code>a {\n  -webkit-animation: none 0s ease 0s 1 normal none running;\n          animation: none 0s ease 0s 1 normal none running;\n  -webkit-backface-visibility: visible;\n          backface-visibility: visible;\n  background: transparent none repeat 0 0 \/ auto auto padding-box border-box scroll;\n  border: medium none currentColor;\n  border-collapse: separate;\n  -o-border-image: none;\n     border-image: none;\n  border-radius: 0;\n  border-spacing: 0;\n  bottom: auto;\n  box-shadow: none;\n  box-sizing: content-box;\n  caption-side: top;\n  clear: none;\n  clip: auto;\n  color: #000;\n  -webkit-columns: auto;\n     -moz-columns: auto;\n          columns: auto;\n  -webkit-column-count: auto;\n     -moz-column-count: auto;\n          column-count: auto;\n  -webkit-column-fill: balance;\n     -moz-column-fill: balance;\n          column-fill: balance;\n  grid-column-gap: normal;\n  -webkit-column-gap: normal;\n     -moz-column-gap: normal;\n          column-gap: normal;\n  -webkit-column-rule: medium none currentColor;\n     -moz-column-rule: medium none currentColor;\n          column-rule: medium none currentColor;\n  -webkit-column-span: 1;\n     -moz-column-span: 1;\n          column-span: 1;\n  -webkit-column-width: auto;\n     -moz-column-width: auto;\n          column-width: auto;\n  content: normal;\n  counter-increment: none;\n  counter-reset: none;\n  cursor: auto;\n  direction: ltr;\n  display: inline;\n  empty-cells: show;\n  float: none;\n  font-family: serif;\n  font-size: medium;\n  font-style: normal;\n  font-feature-settings: normal;\n  font-variant: normal;\n  font-weight: normal;\n  font-stretch: normal;\n  line-height: normal;\n  height: auto;\n  -webkit-hyphens: none;\n      -ms-hyphens: none;\n          hyphens: none;\n  left: auto;\n  letter-spacing: normal;\n  list-style: disc outside none;\n  margin: 0;\n  max-height: none;\n  max-width: none;\n  min-height: 0;\n  min-width: 0;\n  opacity: 1;\n  orphans: 2;\n  outline: medium none invert;\n  overflow: visible;\n  overflow-x: visible;\n  overflow-y: visible;\n  padding: 0;\n  page-break-after: auto;\n  page-break-before: auto;\n  page-break-inside: auto;\n  perspective: none;\n  perspective-origin: 50% 50%;\n  position: static;\n  right: auto;\n  -moz-tab-size: 8;\n    -o-tab-size: 8;\n       tab-size: 8;\n  table-layout: auto;\n  text-align: left;\n  -moz-text-align-last: auto;\n       text-align-last: auto;\n  text-decoration: none;\n  text-indent: 0;\n  text-shadow: none;\n  text-transform: none;\n  top: auto;\n  transform: none;\n  transform-origin: 50% 50% 0;\n  transform-style: flat;\n  transition: none 0s ease 0s;\n  unicode-bidi: normal;\n  vertical-align: baseline;\n  visibility: visible;\n  white-space: normal;\n  widows: 2;\n  width: auto;\n  word-spacing: normal;\n  z-index: auto;\n  all: initial; }\n<\/code><\/pre>\n<p>\u00a1Eso es mucho CSS!<\/p>\n<h2>Minimizar la salida<\/h2>\n<p>Podemos cargar nuestros activos de JavaScript y CSS m\u00e1s r\u00e1pido asegur\u00e1ndonos de que est\u00e9n minimizados. Para hacer esto, podemos agregar un par de complementos adicionales en nuestra compilaci\u00f3n.<\/p>\n<h3>Minimizar CSS con webpack<\/h3>\n<p>Para minimizar CSS vamos a usar el <a href=\"https:\/\/www.npmjs.com\/package\/optimize-css-assets-webpack-plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>optimize-css-assets-webpack-plugin<\/code>paquete npm<\/a>.<\/p>\n<p>Aseg\u00farese <code>cd<\/code>de ingresar a la ra\u00edz de su complemento y ejecute el siguiente comando en su terminal:<\/p>\n<pre><code>npm install optimize-css-assets-webpack-plugin --save-dev\n<\/code><\/pre>\n<p>Ahora haga las siguientes modificaciones en su <code>\/webpack.config.js<\/code>archivo:<\/p>\n<pre><code>const defaultConfig = require( '@wordpress\/scripts\/config\/webpack.config' );\nconst IgnoreEmitWebPackPlugin = require( 'ignore-emit-webpack-plugin' );\nconst MiniCssExtractPlugin = require( 'mini-css-extract-plugin' );\nconst OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');\nconst postcssPresetEnv = require( 'postcss-preset-env' );\nconst production = 'development' !== process.env.NODE_ENV;\n\nmodule.exports = {\n    ...defaultConfig,\n    module: {\n        ...defaultConfig.module,\n        rules: [\n            ...defaultConfig.module.rules,\n            {\n                test: \/.s[ac]ss$\/i,\n                use: [\n                    { loader: MiniCssExtractPlugin.loader },\n                    { loader: 'css-loader' },\n                    {\n                        loader: 'postcss-loader',\n                        options: {\n                            plugins:() =&gt; [ postcssPresetEnv( { stage: 3 }) ],\n                        },\n                    },\n                    { loader: 'sass-loader' },\n                ],\n            },\n        ],\n    },\n    optimization: {\n        ...defaultConfig.optimization,\n        minimize: true,\n        minimizer: [ new OptimizeCssAssetsWebpackPlugin() ],\n        splitChunks: {\n            cacheGroups: {\n                  default: false,\n                editor: {\n                    chunks: 'all',\n                    name: 'editor',\n                    test: \/editor.s[ac]ss$\/i,\n                },\n                style: {\n                    chunks: 'all',                   \n                    name: 'style',\n                    test: \/style.s[ac]ss$\/i,\n                },\n            },\n        },\n    },\n    plugins: [\n        ...defaultConfig.plugins,\n        new IgnoreEmitWebPackPlugin( [ 'editor.js', 'style.js' ] ),\n        new MiniCssExtractPlugin( {\n            filename: '..\/[name].css',\n        } ),\n    ],\n};\n\nif (production) {\n    module.exports.devtool = false;\n}\n<\/code><\/pre>\n<p>Tenga en cuenta la importaci\u00f3n en la l\u00ednea 4, le indicamos a webpack que minimice en la l\u00ednea 32 y el complemento se carga en la l\u00ednea 33.<\/p>\n<p>Ahora, cuando ejecutamos <code>npm start<\/code>, podemos examinar uno de nuestros archivos CSS en la ra\u00edz del complemento para ver el resultado. As\u00ed es <code>\/style.css<\/code>como se ve el ahora:<\/p>\n<pre><code>.wp-block-wcltd-wholesome-notes{background-color:#000;color:#fff;padding:2px}\n<\/code><\/pre>\n<p>Ha eliminado todos los comentarios, espacios y ha puesto todo en una sola l\u00ednea, lo que ha reducido el tama\u00f1o del archivo.<\/p>\n<h3>Minimizar JavaScript con webpack<\/h3>\n<p>Si echamos un vistazo al <code>\/build\/index.js<\/code>archivo, es bastante extenso. A este archivo tambi\u00e9n le vendr\u00eda bien algo de minificaci\u00f3n.<\/p>\n<p>Para ello vamos a utilizar el <a href=\"https:\/\/www.npmjs.com\/package\/terser-webpack-plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>terser-webpack-plugin<\/code>paquete npm<\/a>.<\/p>\n<p>Aseg\u00farese <code>cd<\/code>de ingresar a la ra\u00edz de su complemento y ejecute el siguiente comando en su terminal:<\/p>\n<pre><code>npm install terser-webpack-plugin  --save-dev\n<\/code><\/pre>\n<p>Ahora haga las siguientes modificaciones en su <code>\/webpack.config.js<\/code>archivo:<\/p>\n<pre><code>const defaultConfig = require( '@wordpress\/scripts\/config\/webpack.config' );\nconst IgnoreEmitWebPackPlugin = require( 'ignore-emit-webpack-plugin' );\nconst MiniCssExtractPlugin = require( 'mini-css-extract-plugin' );\nconst OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');\nconst postcssPresetEnv = require( 'postcss-preset-env' );\nconst production = 'development' !== process.env.NODE_ENV;\nconst TerserWebPackPlugin = require( 'terser-webpack-plugin' );\n\nmodule.exports = {\n    ...defaultConfig,\n    module: {\n        ...defaultConfig.module,\n        rules: [\n            ...defaultConfig.module.rules,\n            {\n                test: \/.s[ac]ss$\/i,\n                use: [\n                    { loader: MiniCssExtractPlugin.loader },\n                    { loader: 'css-loader' },\n                    {\n                        loader: 'postcss-loader',\n                        options: {\n                            plugins: () =&gt; [ postcssPresetEnv( { stage: 3 }) ],\n                        },\n                    },\n                    { loader: 'sass-loader' },\n                ],\n            },\n        ],\n    },\n    optimization: {\n        ...defaultConfig.optimization,\n        minimize: true,\n        minimizer: [ \n            new OptimizeCssAssetsWebpackPlugin(),\n            new TerserWebPackPlugin(),\n        ],\n        splitChunks: {\n            cacheGroups: {\n                default: false,\n                editor: {\n                    chunks: 'all',\n                    name: 'editor',\n                    test: \/editor.s[ac]ss$\/i,\n                },\n                style: {\n                    chunks: 'all',\n                    name: 'style',\n                    test: \/style.s[ac]ss$\/i,\n                },\n            },\n        },\n    },\n    plugins: [\n        ...defaultConfig.plugins,\n        new IgnoreEmitWebPackPlugin( [ 'editor.js', 'style.js' ] ),\n        new MiniCssExtractPlugin( {\n            filename: '..\/[name].css',\n        } ),\n    ],\n};\n\nif (production) {\n    module.exports.devtool = false;\n}\n<\/code><\/pre>\n<p>Tenga en cuenta la importaci\u00f3n en la l\u00ednea 7 y la adici\u00f3n al minimizador en la l\u00ednea 36.<\/p>\n<p>Ahora, si inspeccionamos nuestro <code>\/build\/index.js<\/code>archivo, el JavaScript se ha minimizado.<\/p>\n<p>Minimizando el JavaScript<\/p>\n<h3>Obtenga el prefijo y la esencia de la minificaci\u00f3n<\/h3>\n<p>Puede <a href=\"https:\/\/gist.github.com\/mattwatsoncodes\/b7cbae62ce645a9c6fa18ff136ea7775\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">descargar el archivo de minificaci\u00f3n y polyfill y <code>\/webpack.config.js<\/code>los archivos que lo acompa\u00f1an <code>\/package.json<\/code>desde GitHub gist<\/a>.<\/p>\n<p>La configuraci\u00f3n final tambi\u00e9n contiene algunos extras adicionales. Aqu\u00ed hay una descripci\u00f3n general r\u00e1pida de cada uno.<\/p>\n<h3>Limpia y ordena autom\u00e1ticamente tu CSS<\/h3>\n<p>Puede formatear, corregir autom\u00e1ticamente y ordenar su Sass a medida que avanza, para hacer esto, instale los siguientes paquetes:<\/p>\n<pre><code>npm install stylelint stylelint-config-standard stylelint-order stylelint-webpack-plugin --save-dev\n<\/code><\/pre>\n<p>Tambi\u00e9n guarde el siguiente archivo en su configuraci\u00f3n con el nombre <code>.stylelintrc<\/code>. Esto hereda los valores predeterminados proporcionados por <code>stylelint-config-standard<\/code>y agrega algunos extras adicionales, incluido el orden alfab\u00e9tico.<\/p>\n<p>Puede configurar este archivo seg\u00fan sus preferencias siguiendo las instrucciones de la <a href=\"https:\/\/stylelint.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n de Styleline<\/a>.<\/p>\n<pre><code>{\n    \"extends\": \"stylelint-config-standard\",\n    \"plugins\": [\n        \"stylelint-order\"\n    ],\n    \"rules\": {\n        \"color-hex-length\": \"long\",\n        \"font-family-name-quotes\": null,\n        \"function-url-quotes\": \"always\",\n        \"indentation\": \"tab\",\n        \"max-empty-lines\": 2,\n        \"number-leading-zero\": \"never\",\n        \"order\/order\": [\n            \"custom-properties\",\n            \"declarations\"\n        ],\n        \"order\/properties-alphabetical-order\": true,\n        \"string-quotes\": \"single\",\n    }\n}\n<\/code><\/pre>\n<p>Ahora, en su <code>\/src\/editor.scss<\/code>archivo, haga que su Sass sea un poco desordenado y agregue un par de reglas de prueba, as\u00ed:<\/p>\n<pre><code>.wp-block-wcltd-wholesome-notes{\n  border: 1px dotted #f00; background: url(\"https:\/\/via.placeholder.com\/150\");}\n<\/code><\/pre>\n<p>Ahora, cuando est\u00e9 ejecutando <code>npm start<\/code>, presione guardar, se ordenar\u00e1 autom\u00e1ticamente y se ordenar\u00e1 alfab\u00e9ticamente de la siguiente manera:<\/p>\n<pre><code>.wp-block-wcltd-wholesome-notes {\n    background: url('https:\/\/via.placeholder.com\/150');\n    border: 1px dotted #ff0000;\n}\n<\/code><\/pre>\n<p><code>.stylelintrc<\/code>Tenga en cuenta que se han implementado algunas de las reglas que agregu\u00e9 en mi archivo, como:<\/p>\n<ul>\n<li>Uso de valores hexadecimales completos para los colores.<\/li>\n<li>Alfabetizaci\u00f3n de propiedades.<\/li>\n<li>Comillas simples para cadenas.<\/li>\n<li>Aplicaci\u00f3n de comillas para direcciones URL<\/li>\n<\/ul>\n<h3>Obtenga errores amistosos del paquete web<\/h3>\n<p>Puede hacer que los errores de su paquete web sean mucho m\u00e1s f\u00e1ciles de leer instalando el paquete npm <code>friendly-errors-webpack-plugin<\/code>.<\/p>\n<p>Instale el complemento de la forma habitual con su terminal:<\/p>\n<pre><code>npm install friendly-errors-webpack-plugin --save-dev\n<\/code><\/pre>\n<p>Ahora, si tiene un error en su JavaScript, la salida ser\u00e1 mucho m\u00e1s amigable que antes.<\/p>\n<p>Antes del complemento:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-169104-61e7fe2822270.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-169104-61e7fe2822270.png\" alt=\"Configuraci\u00f3n adicional para webpack\" ><\/a><\/p>\n<p>Despu\u00e9s del complemento:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-169104-61e7fe29002b6.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-169104-61e7fe29002b6.png\" alt=\"Configuraci\u00f3n adicional para webpack\" ><\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este art\u00edculo se basa en el archivo webpack.config.js que creamos en el art\u00edculo Ampliaci\u00f3n de la configuraci\u00f3n del paquete web de WordPress Create Block Script. Si no has le\u00eddo ese art\u00edculo, yo&#8230;<\/p>\n","protected":false},"author":1,"featured_media":223973,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,914,840],"tags":[1172],"class_list":["post-228273","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-tutoriales","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228273"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228273\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223973"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}