<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Francisco Zapata</title>
    <description>The latest articles on DEV Community by Francisco Zapata (@drfcozapata).</description>
    <link>https://dev.to/drfcozapata</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F667703%2F0b1b0899-8f36-4fb5-bca4-87f488014a1f.jpeg</url>
      <title>DEV Community: Francisco Zapata</title>
      <link>https://dev.to/drfcozapata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/drfcozapata"/>
    <language>en</language>
    <item>
      <title>How to get ESLint 9.11.1 to run in Vue 3</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Fri, 27 Sep 2024 05:03:09 +0000</pubDate>
      <link>https://dev.to/drfcozapata/how-to-get-eslint-9111-to-run-in-vue-3-4cjh</link>
      <guid>https://dev.to/drfcozapata/how-to-get-eslint-9111-to-run-in-vue-3-4cjh</guid>
      <description>&lt;p&gt;Last September 23rd the &lt;strong&gt;ESLint&lt;/strong&gt; team released the new version, 9.11.1.&lt;/p&gt;

&lt;p&gt;As we grow as developers and try to take care of good practices and, in my case, trying to follow the recommendations of the Vue Core Team to develop Vue.js projects, we create habits that lead us to do some things automatically.&lt;/p&gt;

&lt;p&gt;My routine when creating a new Vue project is to choose the configuration that you can see in the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forfba0h9e5pze06x19mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forfba0h9e5pze06x19mg.png" alt="New Vue.js project configuration" width="683" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once I finish creating the project, I access the directory, run &lt;code&gt;npm install&lt;/code&gt;, run &lt;code&gt;ncu -u&lt;/code&gt; to update all the dependencies to their latest versions, and run &lt;code&gt;npm install&lt;/code&gt; again.&lt;/p&gt;

&lt;p&gt;As of today (September 27, 2024), when you create the scaffold of a new project in Vue, the &lt;code&gt;package.json&lt;/code&gt; file looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"new-vue-project"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"run-p type-check &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;build-only {@}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; --"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"preview"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite preview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test:unit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vitest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build-only"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type-check"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-tsc --build --force"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prettier --write src/"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pinia"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.1.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.4.29"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue-router"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.3.3"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@rushstack/eslint-patch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.8.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@tsconfig/node20"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^20.1.4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/jsdom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^21.1.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^20.14.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vitejs/plugin-vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.0.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/eslint-config-prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^9.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/eslint-config-typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^13.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/test-utils"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.4.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/tsconfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.5.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.57.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint-plugin-vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^9.23.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jsdom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^24.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"npm-run-all2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^6.2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.2.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"~5.4.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vite-plugin-vue-devtools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vitest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.6.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue-tsc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.0.21"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run 'npm-check-updates' (&lt;code&gt;ncu&lt;/code&gt;, without the '-u' flag) it gives you a report similar to the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Checking /home/drfcozapata/vue.js/new-vue-project/package.json
[====================] 22/22 100%

 @rushstack/eslint-patch     ^1.8.0  →  ^1.10.4
 @types/node               ^20.14.5  →  ^22.7.3
 @vitejs/plugin-vue          ^5.0.5  →   ^5.1.4
 eslint                     ^8.57.0  →  ^9.11.1
 eslint-plugin-vue          ^9.23.0  →  ^9.28.0
 jsdom                      ^24.1.0  →  ^25.0.1
 npm-run-all2                ^6.2.0  →   ^6.2.3
 pinia                       ^2.1.7  →   ^2.2.2
 prettier                    ^3.2.5  →   ^3.3.3
 typescript                  ~5.4.0  →   ~5.6.2
 vite                        ^5.3.1  →   ^5.4.8
 vite-plugin-vue-devtools    ^7.3.1  →   ^7.4.6
 vitest                      ^1.6.0  →   ^2.1.1
 vue                        ^3.4.29  →   ^3.5.9
 vue-router                  ^4.3.3  →   ^4.4.5
 vue-tsc                    ^2.0.21  →   ^2.1.6

Run ncu -u to upgrade package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where it is clearly seen that you can update Vue.js from version 3.4.29 (default still) to 3.5.9 (the latest at the time of writing this post) and you can update eslint from version 8.57.0 to 9.11.1 (also the latest at the time of writing this post), among other possible updates.&lt;/p&gt;

&lt;p&gt;In this opportunity, as is my habit, I ran &lt;code&gt;ncu -u&lt;/code&gt; and this updated everything automatically, not considering the surprise of the radical changes that brings the new version of the powerful ESLint.&lt;/p&gt;

&lt;p&gt;But before we get to that point, we have to answer an important question...&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you use ESLint in your Vue.js projects?
&lt;/h2&gt;

&lt;p&gt;ESLint is a linter, and a linter is a “static analysis” tool used to identify and point out errors, style issues and possible bugs in source code, among which we can mention:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Error detection&lt;/em&gt;: linters can find common errors in the code, such as unused variables, syntax errors and logic problems, among others.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Code styling&lt;/em&gt;: linters help maintain a consistent coding style by pointing out deviations from established conventions, such as indentation, use of quotation marks and/or semicolons, function formatting, etc.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Improve code quality&lt;/em&gt;: linters help improve overall software quality and facilitate maintenance by identifying potential problems before the code is executed.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Integrate workflows&lt;/em&gt;: linters are often integrated into code editors and build systems, allowing instant feedback while writing code.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What are these radical changes brought by the new version of ESLint?
&lt;/h2&gt;

&lt;p&gt;ESLint version 9.0.0 brings some radical changes compared to previous versions. Two of the most important changes we can mention are the following:&lt;/p&gt;

&lt;h3&gt;
  
  
  Versions lower than 18.18 and 19 of Node.js are not supported by this new version.
&lt;/h3&gt;

&lt;p&gt;The new version of ESLint supports the following versions of Node.js:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v18.18.0 and above.&lt;/li&gt;
&lt;li&gt;Node.js v20.9.0 and higher&lt;/li&gt;
&lt;li&gt;Node.js v21 and higher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, we must take into consideration the version of Node we are running. I still recommend the use of the NVM (Node Version Manager) tool and the subsequent installation of Node through it if you work with legacy code and you need to run a specific version of Node, as in my case.&lt;/p&gt;

&lt;h3&gt;
  
  
  New default configuration format
&lt;/h3&gt;

&lt;p&gt;As of ESLint v9.0.0, 'eslint.config.js' is the new default configuration format; the previous format (.eslintrc.js) is no longer used and will not automatically be searched for.&lt;/p&gt;

&lt;p&gt;And this was the point that I was unaware of and that had me quite a while trying to fix the problem, which was no problem at all in the end.&lt;/p&gt;

&lt;p&gt;In addition, many other important changes were incorporated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Several formatters that were used internally by ESLint were removed.&lt;/li&gt;
&lt;li&gt;The require-jsdoc and valid-jsdoc rules were removed.&lt;/li&gt;
&lt;li&gt;Enabled 4 new rules (&lt;code&gt;no-constant-binary-expression&lt;/code&gt;, &lt;code&gt;no-empty-static-block&lt;/code&gt;, &lt;code&gt;no-new-native-nonconstructor&lt;/code&gt; and &lt;code&gt;no-unused-private-class-members&lt;/code&gt;) and removed 4 others (&lt;code&gt;no-extra-semi&lt;/code&gt;, &lt;code&gt;no-inner-declarations&lt;/code&gt;, &lt;code&gt;no-mixed-spaces-and-tabs&lt;/code&gt; and &lt;code&gt;no-new-symbol&lt;/code&gt;) in eslint:recommended.&lt;/li&gt;
&lt;li&gt;When using the &lt;code&gt;--output-file&lt;/code&gt; flag the file is written to disk, even if the output is empty.&lt;/li&gt;
&lt;li&gt;Changed the way of writing rules related to '/*exported */'.&lt;/li&gt;
&lt;li&gt;Made the schemas of some rules stricter.&lt;/li&gt;
&lt;li&gt;And many other changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you remember the package.json file I posted earlier, it contains a line with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Well, surprise! Because of all the changes, that line no longer works if you upgrade to the new version.&lt;/p&gt;

&lt;p&gt;Similarly, the '.eslintrc.cjs' file containing the following code doesn't work either!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* eslint-env node */&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@rushstack/eslint-patch/modern-module-resolution&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;extends&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;plugin:vue/vue3-essential&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;eslint:recommended&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vue/eslint-config-typescript&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vue/eslint-config-prettier/skip-formatting&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;parserOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;ecmaVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What to do if you want to continue using ESLint in your Vue 3 projects with the latest versions of all dependencies?
&lt;/h2&gt;

&lt;p&gt;The answer is extremely simple, although I had to read quite a bit to get to it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create the new project using &lt;code&gt;npm create vue@latest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Access the project directory and run &lt;code&gt;npm install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;ncu -u&lt;/code&gt; to update the dependencies.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npm install&lt;/code&gt; again.&lt;/li&gt;
&lt;li&gt;Open your code editor and delete the '.eslintrc.cjs' file.&lt;/li&gt;
&lt;li&gt;Run the following command: &lt;code&gt;npm init @eslint/config@latest&lt;/code&gt;. This command runs a script that allows you to create the new configuration for ESLint and create the necessary new files.
In my case, I select:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;How would you like to use ESLint?&lt;/em&gt; &lt;code&gt;To check syntax and find problems&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;What type of modules does your project use?&lt;/em&gt; &lt;code&gt;CommonJS (require/exports)&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Which framework does your project use?&lt;/em&gt; &lt;code&gt;Vue.js&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Does your project use TypeScript?&lt;/em&gt; &lt;code&gt;Yes&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Where does your code run?&lt;/em&gt; &lt;code&gt;Browser&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The config that you've selected requires the following dependencies: eslint, globals, @eslint/js, typescript-eslint, eslint-plugin-vue. Would you like to install them now?&lt;/em&gt; &lt;code&gt;Yes&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Which package manager do you want to use?&lt;/em&gt; &lt;code&gt;npm&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modify the line in the 'package.json' file so that it looks like this: &lt;code&gt;“lint”: “eslint . --fix"&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of the above led to create the new 'eslint.config.js' file with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;globals&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;globals&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;pluginJs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@eslint/js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;tseslint&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;typescript-eslint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;pluginVue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eslint-plugin-vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.{js,mjs,cjs,ts,vue}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;sourceType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;commonjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="p"&gt;}},&lt;/span&gt;
  &lt;span class="nx"&gt;pluginJs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;tseslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;pluginVue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flat/essential&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;parserOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;tseslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;}}},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From here you can run &lt;code&gt;npm run lint&lt;/code&gt; with confidence, without getting a bunch of warnings and errors in the console.&lt;/p&gt;

&lt;p&gt;I hope the above information will be useful for you and avoid wasting the time I wasted trying to solve this breacking-change.&lt;/p&gt;

&lt;p&gt;Much success and blessings from Venezuela.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>eslint</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Cómo hacer que ESLint 9.11.1 funcione en Vue 3</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Fri, 27 Sep 2024 04:09:59 +0000</pubDate>
      <link>https://dev.to/drfcozapata/como-hacer-que-eslint-9111-funcione-en-vue-3-26b0</link>
      <guid>https://dev.to/drfcozapata/como-hacer-que-eslint-9111-funcione-en-vue-3-26b0</guid>
      <description>&lt;p&gt;El pasado 23 de septiembre el equipo de &lt;strong&gt;ESLint&lt;/strong&gt; liberó la nueva versión, la 9.11.1.&lt;/p&gt;

&lt;p&gt;En la medida en la que vamos creciendo como desarrolladores y procuramos cuidar las buenas prácticas y, en mi caso, tratando de seguir las recomendaciones del Vue Core Team para desarrollar proyectos de Vue.js, vamos creando hábitos que nos llevan a hacer algunas cosas automáticamente.&lt;/p&gt;

&lt;p&gt;Mi rutina al crear un nuevo proyecto de Vue es elegir la configuración que se puede ver en la siguiente imagen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6kh8c4z7zcszgc4e84m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6kh8c4z7zcszgc4e84m.png" alt="Image description" width="683" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una vez termino de crear el proyecto, accedo al directorio, ejecuto &lt;code&gt;npm install&lt;/code&gt;, ejecuto &lt;code&gt;ncu -u&lt;/code&gt; para actualizar todas las dependencias a sus últimas versiones, y vuelvo a ejecutar &lt;code&gt;npm install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Al día de hoy (27 de septiembre de 2024), cuando creas el scaffold de un nuevo proyecto en Vue, el archivo 'package.json' luce de la siguiente manera:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"new-vue-project"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"run-p type-check &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;build-only {@}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; --"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"preview"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite preview"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test:unit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vitest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"build-only"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type-check"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vue-tsc --build --force"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prettier --write src/"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pinia"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.1.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.4.29"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue-router"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.3.3"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@rushstack/eslint-patch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.8.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@tsconfig/node20"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^20.1.4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/jsdom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^21.1.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@types/node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^20.14.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vitejs/plugin-vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.0.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/eslint-config-prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^9.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/eslint-config-typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^13.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/test-utils"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.4.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@vue/tsconfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.5.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.57.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint-plugin-vue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^9.23.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jsdom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^24.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"npm-run-all2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^6.2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.2.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"~5.4.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vite-plugin-vue-devtools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vitest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^1.6.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vue-tsc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.0.21"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si ejecutas 'npm-check-updates' (&lt;code&gt;ncu&lt;/code&gt;, sin la bandera '-u') te entrega un reporte similar al siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Checking /home/drfcozapata/vue.js/new-vue-project/package.json
[====================] 22/22 100%

 @rushstack/eslint-patch     ^1.8.0  →  ^1.10.4
 @types/node               ^20.14.5  →  ^22.7.3
 @vitejs/plugin-vue          ^5.0.5  →   ^5.1.4
 eslint                     ^8.57.0  →  ^9.11.1
 eslint-plugin-vue          ^9.23.0  →  ^9.28.0
 jsdom                      ^24.1.0  →  ^25.0.1
 npm-run-all2                ^6.2.0  →   ^6.2.3
 pinia                       ^2.1.7  →   ^2.2.2
 prettier                    ^3.2.5  →   ^3.3.3
 typescript                  ~5.4.0  →   ~5.6.2
 vite                        ^5.3.1  →   ^5.4.8
 vite-plugin-vue-devtools    ^7.3.1  →   ^7.4.6
 vitest                      ^1.6.0  →   ^2.1.1
 vue                        ^3.4.29  →   ^3.5.9
 vue-router                  ^4.3.3  →   ^4.4.5
 vue-tsc                    ^2.0.21  →   ^2.1.6

Run ncu -u to upgrade package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Donde se ve claramente que puedes actualizar Vue.js de la versión 3.4.29 (por defecto aún) a la 3.5.9 (la última al momento de escribir este post) y puedes actualizar eslint de la versión 8.57.0 a la 9.11.1 (también la última al momento de escribir este post), entre otras actualizaciones posibles.&lt;/p&gt;

&lt;p&gt;En esta oportunidad, como es mi costumbre, ejecuté &lt;code&gt;ncu -u&lt;/code&gt; y esto actualizó todo de forma automática, no contando con la sorpresa de los cambios radicales que trae la nueva versión del potente ESLint.&lt;/p&gt;

&lt;p&gt;Pero antes de entrar a ese punto, tenemos que dar respuesta a una pregunta importante...&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por qué deberías usar ESLint en tus proyectos de Vue.js?
&lt;/h2&gt;

&lt;p&gt;ESLint es un linter, y un linter es una herramienta de "análisis estático" que se usa para identificar y señalar errores, problemas de estilo y posibles bugs en el código fuente, entre los cuales podemos mencionar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Detección de errores&lt;/em&gt;: los linters pueden encontrar errores comunes en el código, como variables no utilizadas, errores de sintaxis y problemas de lógica, entre otros.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Estilar el código&lt;/em&gt;: los linters ayudan a mantener un estilo de codificación consistente al señalar desviaciones de las convenciones establecidas, como la indentación, el uso de comillas y/o punto y coma, el formato de funciones, etc.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Mejorar la calidad del código&lt;/em&gt;: los linters contribuyen a mejorar la calidad general del software y facilitan el mantenimiento al identificar problemas potenciales antes de que el código se ejecute.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Integrar los flujos de trabajo&lt;/em&gt;: a menudo los linters se integran en editores de código y sistemas de construcción, lo que permite recibir retroalimentación instantánea mientras se escribe el código.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  ¿Cuáles son esos cambios radicales que trae la nueva versión de ESLint?
&lt;/h2&gt;

&lt;p&gt;La versión 9.0.0 de ESLint presenta algunos cambios radicales en relación a las versiones anteriores. Dos de los cambios más importantes que podemos mencionar son los siguientes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Las versiones inferiores a la 18.18 y la 19 de Node.js no son soportadas por esta nueva versión.
&lt;/h3&gt;

&lt;p&gt;La nueva versión de ESLint soporta las siguientes versiones de Node.js:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v18.18.0 y superior&lt;/li&gt;
&lt;li&gt;Node.js v20.9.0 y superior&lt;/li&gt;
&lt;li&gt;Node.js v21 y superior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por lo cual, debemos tener en cuenta la versión de Node que estamos ejecutando. Yo sigo recomendando el uso de la herramienta NVM (Node Version Manager) y la instalación posterior de Node a través de éste si trabajas con código legado y te ves en la necesidad de ejecutar alguna versión específica de Node, como es mi caso.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nuevo formato de configuración por defecto
&lt;/h3&gt;

&lt;p&gt;A partir de ESLint v9.0.0, 'eslint.config.js' es el nuevo formato de configuración predeterminado; el formato anterior (.eslintrc.js) ya no se utiliza y no se buscará automáticamente.&lt;/p&gt;

&lt;p&gt;Y este era el punto que yo desconocía y que me tuvo un buen rato tratando de solucionar el problema, que no era ningún problema al final.&lt;/p&gt;

&lt;p&gt;Adicionalmente, se incorporaron muchos otros cambios importantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se eliminaron varios formateadores que eran usados internamente por ESLint.&lt;/li&gt;
&lt;li&gt;Se eliminaron las reglas require-jsdoc y valid-jsdoc.&lt;/li&gt;
&lt;li&gt;Se habilitaron 4 nuevas reglas (&lt;code&gt;no-constant-binary-expression&lt;/code&gt;, &lt;code&gt;no-empty-static-block&lt;/code&gt;, &lt;code&gt;no-new-native-nonconstructor&lt;/code&gt; y &lt;code&gt;no-unused-private-class-members&lt;/code&gt;) y se eliminaron otras 4 (&lt;code&gt;no-extra-semi&lt;/code&gt;, &lt;code&gt;no-inner-declarations&lt;/code&gt;, &lt;code&gt;no-mixed-spaces-and-tabs&lt;/code&gt; y &lt;code&gt;no-new-symbol&lt;/code&gt;) en eslint:recommended.&lt;/li&gt;
&lt;li&gt;Cuando se usa la bandera &lt;code&gt;--output-file&lt;/code&gt; se escribe el archivo en el disco, incluso si la salida está vacía.&lt;/li&gt;
&lt;li&gt;Se cambió la manera de escribir las reglas relacionadas con '/* exported */'.&lt;/li&gt;
&lt;li&gt;Se hicieron más estrictos los esquemas de algunas reglas.&lt;/li&gt;
&lt;li&gt;Y muchos otros cambios más.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si recuerdas el archivo 'package.json que publiqué antes,éste contiene una línea con el siguiente código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nl"&gt;"lint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pues, ¡sorpresa! A raíz de todos los cambios, esa línea ya no funciona si actualizas a la nueva versión.&lt;/p&gt;

&lt;p&gt;De igual manera, el archivo '.eslintrc.cjs' que contiene el siguiente código ¡tampoco funciona!:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* eslint-env node */&lt;/span&gt;
&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@rushstack/eslint-patch/modern-module-resolution&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;extends&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;plugin:vue/vue3-essential&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;eslint:recommended&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vue/eslint-config-typescript&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vue/eslint-config-prettier/skip-formatting&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;parserOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;ecmaVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ¿Qué hacer si deseas seguir usando ESLint en tus proyectos de Vue 3 con las últimas versiones de todas las dependencias?
&lt;/h2&gt;

&lt;p&gt;La respuesta es sumamente sencilla, aunque tuve que leer bastante para llegar hasta ella:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Crea el nuevo proyecto usando &lt;code&gt;npm create vue@latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Accede al directorio del proyecto y ejecuta &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;ncu -u&lt;/code&gt; para actualizar las dependencias&lt;/li&gt;
&lt;li&gt;Vuelve a ejecutar &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Abre tu editor de código y elimina el archivo '.eslintrc.cjs'&lt;/li&gt;
&lt;li&gt;Ejecuta el siguiente comando: &lt;code&gt;npm init @eslint/config@latest&lt;/code&gt;. Este comando ejecuta un script que te permite crear la nueva configuración para ESLint y crear los nuevos archivos necesarios.
En mi caso, yo selecciono:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;¿Cómo te gustaría usar ESLint?&lt;/em&gt; &lt;code&gt;To check syntax and find problems&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;¿Qué tipo de módulos usa tu proyecto?&lt;/em&gt; &lt;code&gt;CommonJS (require/exports)&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;¿Qué tipo de framework usa tu proyecto?&lt;/em&gt; &lt;code&gt;Vue.js&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;¿Tu proyecto usa TypeScript?&lt;/em&gt; &lt;code&gt;Yes&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;¿Dónde se ejecuta tu código?&lt;/em&gt; &lt;code&gt;Browser&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;La configuración que has seleccionado requiere las siguientes dependencias: eslint, globals, @eslint/js, typescript-eslint, eslint-plugin-vue. ¿Quieres instalarlas ahora?&lt;/em&gt; &lt;code&gt;Yes&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;¿Cuál manejador de paquetes quieres usar?&lt;/em&gt; &lt;code&gt;npm&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modifica la línea en el archivo 'package.json' de forma que quede así: &lt;code&gt;"lint": "eslint . --fix"&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Todo lo anterior condujo a crear el nuevo archivo 'eslint.config.js' con el siguiente código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;globals&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;globals&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;pluginJs&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@eslint/js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;tseslint&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;typescript-eslint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;pluginVue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eslint-plugin-vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.{js,mjs,cjs,ts,vue}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;sourceType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;commonjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;globals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="p"&gt;}},&lt;/span&gt;
  &lt;span class="nx"&gt;pluginJs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;tseslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;recommended&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;pluginVue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flat/essential&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;**/*.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;languageOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;parserOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;tseslint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;}}},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A partir de aquí puedes ejecutar &lt;code&gt;npm run lint&lt;/code&gt; con toda confianza, sin que te salten un montón de advertencias y errores en la consola.&lt;/p&gt;

&lt;p&gt;Espero que la información anterior te sea útil y te evite perder el tiempo que yo perdí tratando de solucionar este breacking-change.&lt;/p&gt;

&lt;p&gt;Mucho éxito y bendiciones desde Venezuela.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>eslint</category>
      <category>frontend</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Everything about CSS</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Fri, 10 Feb 2023 01:21:36 +0000</pubDate>
      <link>https://dev.to/drfcozapata/everything-about-css-10hl</link>
      <guid>https://dev.to/drfcozapata/everything-about-css-10hl</guid>
      <description>&lt;p&gt;A few minutes ago I logged into the Slack of my community (&lt;a href="https://academlo.com/" rel="noopener noreferrer"&gt;Academlo&lt;/a&gt;) and I came across a question that immediately caught my attention:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Can you recommend me a CSS book, that has all the commands, to learn them"&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question is evidently asked by one of the new students. At the time it was also my concern and I am sure it was that of many who will read me. &lt;/p&gt;

&lt;p&gt;And it didn't only happen to me with CSS; it applies to any technology we learn when we take our first steps in this wonderful world of web development.&lt;/p&gt;

&lt;p&gt;I wanted to know EVERYTHING, and to know it NOW, because I thought that way I would be a better developer.&lt;/p&gt;

&lt;p&gt;A couple of years have passed since then. I have walked the path of web development at a professional level, and understood some details of our profession that allowed me to give an answer to this friend and that I will also share here with you.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  My answer
&lt;/h2&gt;

&lt;p&gt;I transcribe my response verbatim because I think it encompasses what any developer with some road walked would tell you when faced with a similar question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Hello XXXXXXXX!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bro, it is impossible (literally speaking) to learn ALL the "commands" of any technology, and there is no point in doing so either. Let me explain...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CSS has a specific structure and syntax that you must know just because, and that is easy to understand and learn.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Within that structure, there is a group of PROPERTIES that are the ones you are going to use in 80% of the cases and another 20% that are going to be of occasional use (to make animations, transitions, etc.).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The first group (80%) comprise, at most, 30-40% of the total CSS properties. Those are the ones you learn by practicing day by day and become a regular part of your lexicon as a developer (margin, padding, text-align, etc.).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The second group (the other 20%) comprise the remaining 60-70%; obviously, the majority of CSS properties. Those are the ones we know exist, but we don't spend brain cells storing them in memory.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And how do I do when I need them? What all developers do in our daily work: when we don't know something, we google or go to specific sources where we know the information is. That is the greatest talent you will have to develop as a Web Developer: look for the right information and learn to read the official documentation of the different technologies.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the case of CSS, the information is mainly found in 3 sources (although, of course, there are many others):&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="noopener noreferrer"&gt;CSS documentation on MDN&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.w3schools.com/css/" rel="noopener noreferrer"&gt;CSS documentation on W3School&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;There you get EVERYTHING you need to know about CSS. However, there are specific things that you will want to do and you will have to google, because there is only the generality of CSS there.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Just as it happens with CSS, it will happen with the programming languages themselves: JavaScript, PHP, Node.js, Python, etc. There are general sites where the official documentation is condensed, but the details, tricks, examples of how to do something specific, you have to look for them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your best friends on this road will be Google, YouTube and Stack Overflow.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I hope I have helped you, I wish you success!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  I conclude
&lt;/h2&gt;

&lt;p&gt;Being a developer is not just about writing code and memorizing commands; it is much more. &lt;/p&gt;

&lt;p&gt;Being a developer involves learning to generate mental processes that lead you to achieve an end: that "perfect" web site you designed in your mind.&lt;/p&gt;

&lt;p&gt;Some things are written. The rest, most of it really, you will have to create it yourself. That's why we are DEVELOPERS and not just CODE TRANSCRIPTORS.&lt;/p&gt;

&lt;p&gt;The developer imagines, thinks, analyzes and creates. Hence the motto I have on my wallpaper: "Think twice, Code once".&lt;/p&gt;

&lt;p&gt;In that process, some things we do in "automatic", like writing some code segments that will be common to many things. &lt;/p&gt;

&lt;p&gt;But... the wonder of this world and of our profession is that THE DEFINITIVE IS NOT WRITTEN. It is written by each of us when we open our favorite IDE, and it is built anew day after day.&lt;/p&gt;

&lt;p&gt;Being a web developer means being part of a &lt;strong&gt;too dynamic&lt;/strong&gt; profession. &lt;/p&gt;

&lt;p&gt;For example, a couple of weeks ago I felt satisfied with my level of knowledge and command of Vue.js. I thought: &lt;em&gt;"I already know one of the most modern, powerful and revolutionary JavaScript frameworks"&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;To my surprise, that same week I learned about the launch (and dizzying rise) of a new JavaScript framework: &lt;strong&gt;Qwik&lt;/strong&gt;. So the road starts all over again - it never ends!&lt;/p&gt;

&lt;p&gt;I think that's precisely the beauty of this profession. That the only constant thing is change.&lt;/p&gt;

&lt;p&gt;Until the next publication. Blessings.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Todo sobre CSS</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Fri, 10 Feb 2023 01:05:20 +0000</pubDate>
      <link>https://dev.to/drfcozapata/todo-sobre-css-2i1b</link>
      <guid>https://dev.to/drfcozapata/todo-sobre-css-2i1b</guid>
      <description>&lt;p&gt;Hace unos minutos ingresé en el Slack de mi comunidad (Academlo) y me encontré con una pregunta que captó de inmediato mi atención:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Me pueden recomendar un libro de CSS, que tenga todos los comandos, para aprendérmelos"&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La pregunta es realizada, evidentemente, por uno de los nuevos estudiantes. En su momento fue también mi inquietud y estoy seguro que fue la de muchos que me leerán. &lt;/p&gt;

&lt;p&gt;Y no solo me pasó con CSS; se aplica a cualquier tecnología que aprendemos cuando damos nuestros primeros pasos en este maravilloso mundo del desarrollo web.&lt;/p&gt;

&lt;p&gt;Yo quería saberlo TODO, y saberlo YA, porque pensaba que de esa forma sería mejor desarrollador.&lt;/p&gt;

&lt;p&gt;Han pasado un par de años desde entonces. He transitado el camino del desarrollo web a nivel profesional, y entendido algunos detalles de nuestra profesión que me permitieron dar respuesta a este amigo y que voy a compartir también aquí con ustedes.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Mi Respuesta
&lt;/h2&gt;

&lt;p&gt;Transcribo mi respuesta literal porque creo que abarca lo que cualquier desarrollador con algo de camino andado te diría ante una pregunta similar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"¡Hola XXXXXX!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bro, es imposible (literalmente hablando) aprender TODOS los "comandos" de cualquier tecnología, y no tiene sentido hacerlo tampoco. Me explico...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CSS tiene una estructura y una sintaxis específicas que debes conocer porque sí, y que es fácil de entender y aprender.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Dentro de esa estructura, hay un grupo de PROPIEDADES que son las que vas a utilizar en el 80% de los casos y otro 20% que van a ser de uso ocasional (para hacer animaciones, transiciones, etc.).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;El primer grupo (el 80%) abarcan, como mucho el 30-40% de las propiedades totales de CSS. Esas son las que aprendes practicando día con día y llegan a hacerse parte regular de tu léxico como desarrollador (margin, padding, text-align, etc.).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;El segundo grupo (el otro 20%) abarcan el 60-70% restante; evidentemente, la mayoría de las propiedades de CSS. Esas son las que sabemos que existen, pero no gastamos neuronas guardándolas en memoria.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;¿Y cómo hago cuando las necesite? Lo que hacemos todos los desarrolladores en nuestro trabajo diario: cuando no sabemos algo, googleamos o vamos a fuentes específicas donde sabemos que está la información. Ese es el mayor talento que deberás desarrollar como Web Developer: buscar la información correcta y aprender a leer las documentaciones oficiales de las diferentes tecnologías.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;En el caso de CSS, la información de encuentra fundamentalmente en 3 fuentes (aunque, evidentemente, hay muchas otras):&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS" rel="noopener noreferrer"&gt;Documentación sobre CSS en MDN&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://www.w3schools.com/css/" rel="noopener noreferrer"&gt;Documentación sobre CSS en W3School&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://css-tricks.com/" rel="noopener noreferrer"&gt;CSS Tricks&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Allí consigues TODO lo que necesitas saber de CSS. Y sin embargo, hay cosas puntuales que vas a querer hacer y te va a tocar googlear, porque allí solo está la generalidad de CSS.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Así como sucede con CSS, te va a pasar con los lenguajes de programación propiamente dichos: JavaScript, PHP, Node.js, Python, etc. Hay sitios generales donde se condensa la documentación oficial, pero los detalles, trucos, ejemplos de cómo hacer algo específico toca buscarlos.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tus mejores amigos en este camino van a ser Google, YouTube y Stack Overflow.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Espero haberte ayudado. ¡Mucho éxito!"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Concluyo
&lt;/h2&gt;

&lt;p&gt;Ser desarrollador no es solo escribir código y memorizar comandos; es mucho más. &lt;/p&gt;

&lt;p&gt;Ser desarrollador implica aprender a generar procesos mentales que te conduzcan a lograr un fin: ese sitio web "perfecto" que diseñaste en tu mente.&lt;/p&gt;

&lt;p&gt;Algunas cosas están escritas. El resto, la mayoría realmente, deberás crearlas tú. Por esos somos DESARROLLADORES y no solo TRANSCRIPTORES DE CÓDIGO.&lt;/p&gt;

&lt;p&gt;El desarrollador imagina, piensa, analiza y crea. De allí el lema que tengo en mi wallpaper: "Think twice, Code once".&lt;/p&gt;

&lt;p&gt;En ese proceso, algunas cosas las hacemos en "automático", como el escribir algunos segmentos de código que serán comunes a muchas cosas. &lt;/p&gt;

&lt;p&gt;Pero... la maravilla de este mundo y de nuestra profesión es que LO DEFINITIVO NO ESTÁ ESCRITO. Lo escribe cada uno de nosotros cuando abre su IDE preferido, y se vuelve a construir nuevamente día tras día.&lt;/p&gt;

&lt;p&gt;Ser desarrollador web conlleva ser parte de una profesión &lt;strong&gt;demasiado dinámica&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Por ejemplo, hace un par de semanas me sentí satisfecho con mi nivel de conocimiento y manejo de Vue.js. Pensé: &lt;em&gt;"Ya sé uno de los más modernos, poderosos y revolucionarios frameworks de JavaScript"&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Para mi sorpresa, esa misma semana me enteré del lanzamiento (y vertiginoso ascenso) de un nuevo framework de JavaScript: &lt;strong&gt;Qwik&lt;/strong&gt;. Así que el camino vuelve a empezar. ¡Nunca acaba!&lt;/p&gt;

&lt;p&gt;Creo que eso es precisamente lo más hermoso de esta profesión. Que lo único constante es el cambio.&lt;/p&gt;

&lt;p&gt;Hasta la próxima publicación. Bendiciones.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>New features of VScode v1.75</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Mon, 06 Feb 2023 19:41:02 +0000</pubDate>
      <link>https://dev.to/drfcozapata/new-features-of-vscode-v175-1feh</link>
      <guid>https://dev.to/drfcozapata/new-features-of-vscode-v175-1feh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/drfcozapata/las-nuevas-caracteristicas-de-vscode-v175-3g73"&gt;Versión en Español&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;br&gt;
Today I received the notification of the new version of VScode, v1.75, and I immediately (as I always do) installed it. &lt;/p&gt;

&lt;p&gt;VScode never ceases to amaze and definitely tends to position itself as the &lt;strong&gt;gold standard&lt;/strong&gt; of the word processors that programmers use, although it almost looks like an IDE.&lt;/p&gt;

&lt;p&gt;Let's quickly review the most outstanding (because there are too many for a single post) of these new features. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Profiles
&lt;/h2&gt;

&lt;p&gt;What caught my attention the most in this new version is the possibility to create different &lt;em&gt;&lt;strong&gt;PROFILES&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Now we can create profiles for different development scenarios, and have "different VScode configurations based on workflow" and we can "open multiple workspaces (folders) with different profiles applied simultaneously".&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxyj7d7re21qphoplnva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxyj7d7re21qphoplnva.png" alt="Profiles" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Integrated Live Preview
&lt;/h2&gt;

&lt;p&gt;As they did at the time when they incorporated the &lt;em&gt;bracket colorizer&lt;/em&gt;, this new version brings the new directive &lt;code&gt;livePreview.customExternalBrowser&lt;/code&gt; which means the incorporation of an integrated way to the IDE of the &lt;strong&gt;Live Preview&lt;/strong&gt;, for those who are used to the "Go live" of the Live server extension and similar, also allowing to select the browser to use by default or at any time.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkobeum7bilww0z40uol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkobeum7bilww0z40uol.png" alt="Integrated Preview" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Workbench (&lt;em&gt;Workbench&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;This new version allows to resize several views at the same time by dragging the common corners:&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/sash.mp4" rel="noopener noreferrer"&gt;Example video here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  New Preferences Menu
&lt;/h2&gt;

&lt;p&gt;Version 1.75 brings a completely reorganized and more logically presented preferences menu.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpfy8x70kvqo5gf9bt5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpfy8x70kvqo5gf9bt5m.png" alt="New menu" width="702" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Confirmation to open large files remotely
&lt;/h2&gt;

&lt;p&gt;For those of us who work remotely (via SSH tunnels or others) it is important to "not open" large files when we stand on them, because of the resource consumption that this causes.&lt;/p&gt;

&lt;p&gt;This new version limits the accidental opening of such files and allows to configure this feature through the new &lt;code&gt;workbench.editorLargeFileConfirmation&lt;/code&gt; directive.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9zpzx3y1c51mc54bj79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9zpzx3y1c51mc54bj79.png" alt="Confirmation for opening" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Keyboards shortcut editor improvements
&lt;/h2&gt;

&lt;p&gt;The shortcut editor now displays the extension that contributes to each shortcut, allowing you to edit and produce changes to the extensions themselves, in addition to other improvements.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring the shell environment resolution timeout
&lt;/h2&gt;

&lt;p&gt;Many of us have encountered when opening the program the warning that the shell environment resolution timeout has expired, and we are left not knowing what to do, other than restarting it.&lt;/p&gt;

&lt;p&gt;The new &lt;code&gt;application.shellEnvironmentResolutionTimeout&lt;/code&gt; directive (macOS and Linux only, for now) allows you to increase the shell environment resolution timeout when necessary. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Editor selection mode suggestion
&lt;/h2&gt;

&lt;p&gt;The new &lt;code&gt;editor.suggest.selectionMode&lt;/code&gt; directive now allows to configure whether intellisense suggestions are selected automatically (Enter or Tab) or by trigger characters.&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/suggest-select-mode.mp4" rel="noopener noreferrer"&gt;Example video here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Redesigned inline suggestions toolbar
&lt;/h2&gt;

&lt;p&gt;More compact and intuitive, the inline suggestions toolbar now has buttons that allow you to scroll through alternative suggestions.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  New terminal shorcuts
&lt;/h2&gt;

&lt;p&gt;The integrated terminal features new keyboard shortcuts that allow more actions without having to use the mouse, saving time when programming.&lt;/p&gt;

&lt;p&gt;Terminal links are detected and presented as alternatives to access them using the &lt;code&gt;Ctrl/Cmd + Shift + O&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;We can re-execute a recent command in the terminal without using the up or down arrows, but by searching for it with the command &lt;code&gt;Ctrl/Cmd + Alt + R&lt;/code&gt; or searching the recent working directory with the command &lt;code&gt;Ctrl/Cmd + G&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finl71s1bp4kfxhntniic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finl71s1bp4kfxhntniic.png" alt="New shorcuts" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another new feature is that accessing the three dots (...) of the terminal presents new options that can be made accessible from the right mouse button.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Continue Working On&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Another super interesting improvement is the so-called "Continue working on", a new feature that allows you to start in a Git repository in a local window and continue in a remote window as if it were a GitHub Codespace.&lt;/p&gt;

&lt;p&gt;Similarly, you can work on a Git repository in a remote window and continue working on a new local clone using the "Continue working on new local clone" command.&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/continue-on-publish-branch.mp4" rel="noopener noreferrer"&gt;Example video here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
These are, among many others, some of the new features brought by VScode version 1.75 that contribute to continue positioning it as the browser of choice for most programmers of any language, in addition to the fact that it is still the best free and open source "IDE" available.&lt;/p&gt;

&lt;p&gt;Explore in detail other new features (New commands, GitHub Repository management, Disabling commands, User Interface, Debugging, ESLint upgrade to version 2.4.0, GitHub Copilot default for business accounts, TypeScript 5.0 support, etc.) at the &lt;a href="https://code.visualstudio.com/updates/v1_75#vscode" rel="noopener noreferrer"&gt;VScode site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Until the next publication. Blessings.&lt;br&gt;
 &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>community</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Las nuevas características de VScode v1.75</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Mon, 06 Feb 2023 18:27:31 +0000</pubDate>
      <link>https://dev.to/drfcozapata/las-nuevas-caracteristicas-de-vscode-v175-3g73</link>
      <guid>https://dev.to/drfcozapata/las-nuevas-caracteristicas-de-vscode-v175-3g73</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/drfcozapata/new-features-of-vscode-v175-1feh"&gt;English version&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;br&gt;
Hoy recibí la notificación de la nueva versión de VScode, la v1.75, y de inmediato (como hago siempre) la instalé. &lt;/p&gt;

&lt;p&gt;VScode no deja de sorprender y definitivamente tiende a posicionarse como el &lt;strong&gt;gold standard&lt;/strong&gt; de los procesadores de texto que usamos los programadores, aunque ya casi parece un IDE.&lt;/p&gt;

&lt;p&gt;Revisemos rápidamente las más resaltantes (porque son demasiadas para un único post) de estas nuevas características. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Perfiles
&lt;/h2&gt;

&lt;p&gt;Lo que más me llamó la atención de esta nueva versión es la posibilidad de crear diferentes &lt;em&gt;&lt;strong&gt;PERFILES&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Ahora podemos crear perfiles para diferentes escenarios de desarrollo, y tener «diferentes configuraciones de VScode basadas en el flujo de trabajo» y podemos «abrir múltiples espacios de trabajo (carpetas) con diferentes perfiles aplicados simultáneamente».&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Vista Previa Integrada (Live Preview)
&lt;/h2&gt;

&lt;p&gt;Como lo hicieron en su momento cuando incorporaron de forma integrada el &lt;em&gt;bracket colorizer&lt;/em&gt;, esta nueva versión trae la nueva directiva &lt;code&gt;livePreview.customExternalBrowser&lt;/code&gt; que supone la incorporación de manera integrada al IDE del &lt;strong&gt;Live Preview&lt;/strong&gt;, para aquellos que estamos habituados al "Go live" de la extensión Live server y similares, permitiendo además seleccionar el navegador a usar por defecto o en cada momento.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkobeum7bilww0z40uol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkobeum7bilww0z40uol.png" alt="Vista previa integrada" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Banco de Trabajo (&lt;em&gt;Workbench&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;Esta nueva versión permite cambiar el tamaño a varias vistas al mismo tiempo, arrastrando las esquinas comunes:&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/sash.mp4" rel="noopener noreferrer"&gt;Video de ejemplo aquí&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Nuevo Menú de Preferencias
&lt;/h2&gt;

&lt;p&gt;La versión 1.75 trae un menú de preferencias completamente reorganizado y más lógicamente presentado.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpfy8x70kvqo5gf9bt5m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpfy8x70kvqo5gf9bt5m.png" alt="Nuevo menú" width="702" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Confirmación para apertura de archivos grandes en remoto
&lt;/h2&gt;

&lt;p&gt;Para quienes trabajamos en remoto (a través de túneles SSH u otros) es importante la "no apertura" de archivos grandes cuando nos paramos sobre ellos, por el consumo de recursos que ello ocasiona.&lt;/p&gt;

&lt;p&gt;Esta nueva versión limita la apertura accidental de tales archivos y permite configurar esta características a través de la nueva directiva &lt;code&gt;workbench.editorLargeFileConfirmation&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9zpzx3y1c51mc54bj79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9zpzx3y1c51mc54bj79.png" alt="Confirmación de apertura" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Mejora del editor de accesos directos (&lt;em&gt;Shorcuts&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;El editor de shortcuts ahora muestra la extensión que contribuye con cada uno de ellos, lo que permite editar y producir cambios en las extensiones propiamente dichas, además de otras mejoras.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Configuración del tiempo de espera de resolución del entorno del shell
&lt;/h2&gt;

&lt;p&gt;Muchos nos hemos encontrado al abrir el programa con el aviso de que se acabó el tiempo de espera de resolución del entorno del shell, y nos quedamos sin saber qué hacer, más que reiniciarlo.&lt;/p&gt;

&lt;p&gt;La nueva directiva &lt;code&gt;application.shellEnvironmentResolutionTimeout&lt;/code&gt; (macOS y Linux solamente, por ahora) permite aumentar el tiempo de espera para resolver el entorno de shell cuando sea necesario. &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Sugerencia del modo de selección en el Editor
&lt;/h2&gt;

&lt;p&gt;La nueva directiva &lt;code&gt;editor.suggest.selectionMode&lt;/code&gt; permite ahora configurar si las sugerencias de los intellisense se seleccionan de forma automática (Enter o Tab) o mediante caracteres de activación.&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/suggest-select-mode.mp4" rel="noopener noreferrer"&gt;Video de ejemplo aquí&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Rediseño de la barra de herramientas de las sugerencias en línea
&lt;/h2&gt;

&lt;p&gt;Más compacta e intuitiva, ahora la barra de herramientas de las sugerencias en línea cuenta con botones que permiten recorrer las sugerencias alternativas.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Nuevos shorcuts en la terminal
&lt;/h2&gt;

&lt;p&gt;La terminal integrada presenta nuevos atajos de teclado que permiten más acciones sin tener que usar el ratón, lo que permite ahorrar tiempo al programar.&lt;/p&gt;

&lt;p&gt;Los enlaces de la terminal son detectados y presentados como alternativas para acceder a ellos utilizando el comando &lt;code&gt;Ctrl/Cmd + Shift + O&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Podemos volver a ejecutar algún comando reciente en la terminal sin hacer uso de las flechas arriba o abajo, sino haciendo búsqueda del mismo por medio del comando &lt;code&gt;Ctrl/Cmd + Alt + R&lt;/code&gt; o buscar el directorio de trabajo reciente con el comando &lt;code&gt;Ctrl/Cmd + G&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finl71s1bp4kfxhntniic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finl71s1bp4kfxhntniic.png" alt="Nuevos shorcuts" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Otra nueva característica es que accediendo a los tres puntos (...) de la terminal se presentan nuevas opciones que se pueden hacer accesibles desde el botón derecho del ratón.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Continue Working On&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Otra mejora super interesante es el denominado "Continue working on", o "Continuar trabajando en", una nueva característica que permite comenzar en un repositorio Git en una ventana local y continuar en una ventana remota como si se tratara de un GitHub Codespace.&lt;/p&gt;

&lt;p&gt;De igual forma, puedes trabajar en un repositorio de Git en una ventana remota y continuar trabajando en un nuevo clon local usando el comando "Continuar trabajando en nuevo clon local".&lt;br&gt;
&lt;a href="https://code.visualstudio.com/assets/updates/1_75/continue-on-publish-branch.mp4" rel="noopener noreferrer"&gt;Video de ejemplo aquí&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
Estas son, entre muchísimas otras, algunas de las nuevas características que nos aporta la versión 1.75 de VScode que contribuyen a seguirlo posicionando como el navegador preferido de la mayoría de los programadores de cualquier lenguaje, adicional al hecho de seguir siendo el mejor "IDE" gratuito y de código abierto existente.&lt;/p&gt;

&lt;p&gt;Explora en detalle otras nuevas características (Nuevos comandos, manejo de Repositorios de GitHub, Desactivación de comandos, Interfaz de usuarios, Debugging, Actualización de ESLint a la versión 2.4.0, GitHub Copilot por defecto para cuentas business, Soporte para TypeScript 5.0, etc.) en el &lt;a href="https://code.visualstudio.com/updates/v1_75#vscode" rel="noopener noreferrer"&gt;sitio de VScode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hasta la próxima publicación. Bendiciones.&lt;br&gt;
 &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Dejé la Pediatría y ahora soy Desarrollador Web Freelance (parte 2 de 2)</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Tue, 22 Mar 2022 19:27:02 +0000</pubDate>
      <link>https://dev.to/drfcozapata/deje-la-pediatria-y-ahora-soy-desarrollador-web-freelance-parte-2-de-2-1fn9</link>
      <guid>https://dev.to/drfcozapata/deje-la-pediatria-y-ahora-soy-desarrollador-web-freelance-parte-2-de-2-1fn9</guid>
      <description>&lt;p&gt;Esta es la continuación y culminación de mi post anterior, el cual puedes leer aquí: &lt;a href="https://dev.to/drfcozapata/deje-la-pediatria-y-ahora-soy-desarrollador-web-freelance-parte-1-de-2-1kj7"&gt;Dejé la Pediatría y ahora soy Desarrollador Web Freelance (parte 1 de 2)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En mi post previo culminé con 3 preguntas: ¿Cómo lo hice? ¿Cuánto tiempo duró? ¿Qué sucedió luego?&lt;/p&gt;

&lt;h2&gt;
  
  
  Primeros Pasos: Udemy
&lt;/h2&gt;

&lt;p&gt;En el proceso de crecer como freelancer, y procurando una mejor manera de generar más ingresos, en noviembre de 2019 compré mi primer curso para iniciar la formación como desarrollador web. &lt;/p&gt;

&lt;p&gt;Hace ya muchos años que internalicé que el dinero que sale de tu bolsillo para poner conocimiento en tu cabeza es una verdadera inversión.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl6jg2dre2qmk91gzsi0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl6jg2dre2qmk91gzsi0.png" alt="Curso Desarrollo Web Completo en Udemy" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sin embargo, la misma dinámica del trabajo que ya desarrollaba no me permitió iniciar esa formación hasta mayo 2020, y lo hice dando pininos en el poco tiempo libre.&lt;/p&gt;

&lt;p&gt;Ese primer curso (de &lt;a href="https://www.youtube.com/c/C%C3%B3digoconJuan" rel="noopener noreferrer"&gt;Juan de la Torre&lt;/a&gt;, uno de los más extraordinarios profesores de Udemy) me abrió las puertas a un universo totalmente desconocido para mí (ahora sé que solo había dado un muy pequeño vistazo) y pude comprender que es mucho más grande y hermoso de lo que imaginaba.&lt;/p&gt;

&lt;p&gt;Juan tiene una pedagogía que pocas veces encuentras; si no logras aprender algo con él, estás en un verdadero problema. 😉&lt;/p&gt;

&lt;p&gt;Adicionalmente, se mantiene actualizando permanentemente sus cursos, por lo que siempre puedes estudiar los últimos cambios de las diferentes tecnologías con él.&lt;/p&gt;

&lt;p&gt;En conclusión, comprar uno de los cursos de Juan es una verdadera valiosa inversión. Me lo agradecerás cuando lo compruebes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nuevamente YouTube
&lt;/h2&gt;

&lt;p&gt;Mientras aprendía, mi tío YouTube fue un soporte invaluable. Es impresionante la cantidad de desarrolladores que imparten excelentes enseñanzas gratuitas allí. &lt;/p&gt;

&lt;p&gt;Así me encontré con &lt;a href="https://www.youtube.com/c/jonmircha" rel="noopener noreferrer"&gt;Jonathan MirCha&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/midudev" rel="noopener noreferrer"&gt;Miguel Durán&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/AlexCGDesign" rel="noopener noreferrer"&gt;Jordan Alexander&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/LuisCabrera" rel="noopener noreferrer"&gt;Luis Cabrera&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/FalconMasters" rel="noopener noreferrer"&gt;Carlos Arturo Esparza (FalconMaster)&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/FaztCode" rel="noopener noreferrer"&gt;Fazt Code&lt;/a&gt; y &lt;a href="https://www.youtube.com/c/Develoteca" rel="noopener noreferrer"&gt;Óscar Uh (Develoteca)&lt;/a&gt;, entre muchos otros, que no solo me ayudaron a comprender las diferentes tecnologías que aprendía, sino además a visualizar la inmensa potencialidad real del desarrollo web.&lt;/p&gt;

&lt;p&gt;Conocí luego a &lt;a href="https://www.youtube.com/c/FernandoHerreraCr" rel="noopener noreferrer"&gt;Fernando Herrera&lt;/a&gt;, otro increíble profesor full stack de Udemy, y a &lt;a href="https://www.youtube.com/c/ProgramadorX" rel="noopener noreferrer"&gt;Xavier Reyes (Programador X)&lt;/a&gt;, quienes me brindaron una perspectiva más para ratificar que había escogido acertadamente el área donde definitivamente quería desarrollarme profesionalmente. Ambos son fuente permanente de inspiración.&lt;/p&gt;

&lt;p&gt;Mencionar a todos de los que ha aprendido algo en YouTube implicaría un post solo para eso. Son muchos lo que quedan por fuera, pero no por eso les agradezco menos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estudios Formales
&lt;/h2&gt;

&lt;p&gt;Sin embargo, quizá por mi antecedente como profesional, sentía que necesitaba realizar estudios algo más formales que solo diversos cursos en muchas plataformas (sin que eso signifique menospreciar los cursos, ¡Para nada! Ellos han sido mi principal fuente de formación).&lt;/p&gt;

&lt;p&gt;A estas alturas ya conocía bien y había tomado diversos cursos en Udemy, Coursera, FreeCodeCamp, Platzi y EDteam.&lt;/p&gt;

&lt;p&gt;En Workana comencé a hacer mis primeros trabajos web; la mayoría de ellos usando WordPress. Sin embargo, cuando comienzas a codificar, quieres hacerlo todo usando código pues entiendes el inmenso potencial de hacerlo de esa forma.&lt;/p&gt;

&lt;p&gt;Los pocos trabajos que encontré allí en ese sentido eran para realizar maquetado de websites usando HTML y CSS, cosa que me encanta (y que realmente hago muy bien), pero era consciente que no me permitía desplegar al completo mi potencialidad en el desarrollo web, ni generar los ingresos que quería.&lt;/p&gt;

&lt;p&gt;Y fue allí cuando apareció &lt;a href="https://academlo.com/" rel="noopener noreferrer"&gt;ACADEMLO&lt;/a&gt;. Un proverbio de la sabiduría zen dice que: "cuando el alumno está listo, el maestro aparece". Ninguna otra expresión se adapta de forma más precisa a mi experiencia.&lt;/p&gt;

&lt;p&gt;Academlo reúne precisamente las condiciones que necesitaba: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capacitación formal con profesores altamente capacitados.&lt;/li&gt;
&lt;li&gt;Horarios que se adaptan a mi necesidad de seguir trabajando mientras estudio.&lt;/li&gt;
&lt;li&gt;Flexibilidad para los pagos (solo $25 dólares mensuales y pagas el bootcamp por cuotas cuando consigues trabajo, una vez finalizada tu formación).&lt;/li&gt;
&lt;li&gt;Ayuda para conseguir un trabajo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Como anillo al dedo. Pedir más sería ser egoísta. 😆&lt;/p&gt;

&lt;p&gt;Así que mi formación iniciada de manera autodidacta ha sido finalmente canalizada y ratificada.&lt;/p&gt;

&lt;p&gt;Entiendo que me falta mucho por aprender. Es un camino que no tiene fin, pero que es demasiado sabroso para dejarlo.&lt;/p&gt;

&lt;p&gt;Este próximo mes de abril (al culminar el módulo de React) debería recibir mi certificación como Desarrollador Web Frontend e iniciar mi búsqueda formal de empleo con la ayuda de Academlo, mientras sigo el camino hacia full stack.&lt;/p&gt;

&lt;p&gt;No ha sido fácil. Sobre todo cuando tienes responsabilidades como papá y como pareja. Pero también ha sido muy "sabroso" recorrerlo.&lt;/p&gt;

&lt;p&gt;Y es en este punto donde no puedo dejar pasar la oportunidad destacar el papel fundamental de Ana Karyna (mi pareja) en este andar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xmrdkvqq6385sr5zvtw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xmrdkvqq6385sr5zvtw.jpg" alt="Foto de Ana Karyna" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tener a una persona que no solo te apoya, sino que además te impulsa y cree en ti creo que ha sido lo mejor de todo el proceso. Y no podía dejar culminar sin agradecerle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Es solo el principio
&lt;/h2&gt;

&lt;p&gt;Estoy claro en que es solo el principio de un nuevo derrotero profesional. Queda muchísimo camino por delante. Con apenas 54 años, estoy iniciando una ruta que estoy disfrutando inmensamente.&lt;/p&gt;

&lt;p&gt;Y es realmente emocionante saber que lo que mejor está aún por venir. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>freelancer</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Dejé la Pediatría y ahora soy Desarrollador Web Freelance (parte 1 de 2)</title>
      <dc:creator>Francisco Zapata</dc:creator>
      <pubDate>Wed, 23 Feb 2022 06:28:55 +0000</pubDate>
      <link>https://dev.to/drfcozapata/deje-la-pediatria-y-ahora-soy-desarrollador-web-freelance-parte-1-de-2-1kj7</link>
      <guid>https://dev.to/drfcozapata/deje-la-pediatria-y-ahora-soy-desarrollador-web-freelance-parte-1-de-2-1kj7</guid>
      <description>&lt;h2&gt;
  
  
  Parte 1: De Pediatra a Freelancer
&lt;/h2&gt;

&lt;p&gt;Es mi primera publicación en DEV; así que comienzo contándote cómo un médico pediatra llegó a ser desarrollador web y cómo llegó hasta aquí.&lt;/p&gt;

&lt;p&gt;Desde que estudiaba medicina me atrajo la programación. &lt;/p&gt;

&lt;p&gt;Por circunstancias de la vida, mientras cursaba el 5to semestre de la carrera, tuve mi primer contacto con una computadora y aprendí a programar (de forma rudimentaria) en Visual Basic. &lt;/p&gt;

&lt;p&gt;No obstante, la dinámica y exigencia de mis estudios no me permitieron profundizar más en ese camino.&lt;/p&gt;

&lt;p&gt;Cursando el último año de medicina, nuevamente, tuve el acercamiento con la programación gracias a un nuevo compañero de residencia que estudiaba Ingeniería de Sistemas; pero nuevamente la alta exigencia de mi carrera a ese nivel no me permitió ir más allá de dar pequeños pasos.&lt;/p&gt;

&lt;p&gt;Terminé mis estudios, comencé a ejercer como médico y luego inicié los estudios para mi especialización como Pediatra, por lo que durante 5 años no tuve ningún acercamiento con la programación. &lt;/p&gt;

&lt;p&gt;Sin embargo, mi tesis final de postgrado fue el diseño del sistema informático (y el software para implementarlo) en el Hospital de Niños donde estudié, para lo que conté con la ayuda de mi ex-compañero de residencia (ya ingeniero).&lt;/p&gt;

&lt;p&gt;Era el año 2000 y esta vez el inicio en el ejercicio de la pediatría me obligó a olvidar el tema y me sumergí de lleno en mi profesión durante casi... ¡18 años!&lt;/p&gt;

&lt;p&gt;De octubre 2017 a junio 2018 ejercí como Director del Hospital central de la ciudad donde vivía en ese entonces y al entregar el cargo me encontré con una desagradable sorpresa: ya no tenía pacientes.&lt;/p&gt;

&lt;p&gt;Mis pacientes se habían cambiado de médico durante los 8 meses de mi ejercicio como Director (porque el cargo exigía dedicación más que exclusiva) y entré en pánico... literalmente.&lt;/p&gt;

&lt;p&gt;¿Qué comenzar a hacer para generar ingresos a los 51 años?&lt;/p&gt;

&lt;p&gt;De junio a septiembre de ese año, mientras trataba de recuperar mi consulta privada, me sumergí en una frenética búsqueda de una ocupación que me permitiera generar ingresos.&lt;/p&gt;

&lt;p&gt;Un buen día encontré un sitio llamado Workana (una plataforma de origen argentino que pone en contacto a freelancers con empleadores para diversas tareas) y me registré.&lt;/p&gt;

&lt;p&gt;Estudié la plataforma, entendí que se trataba de algo serio, e inicié la exploración de mis posibilidades en mi siempre sabelotodo tío YouTube... ¿Qué puedo aprender para ser freelancer y trabajar desde casa?&lt;/p&gt;

&lt;p&gt;A medida que profundizaba, entendí que el campo era enorme, y mi foco en ese momento se centró en la redacción de contenidos pues siempre tuve habilidad para redactar.&lt;/p&gt;

&lt;p&gt;Así inicié una carrera que durante 2 años y medio me llevó de la redacción de post a la redacción de libros como ghostwriter, y luego a la redacción de tesis y ensayos, y a desempeñarme como revisor, corrector y editor de textos.&lt;/p&gt;

&lt;p&gt;En YouTube aprendí que como &lt;strong&gt;freelancer&lt;/strong&gt; debes decir "SÍ" a cualquier ofrecimiento de trabajo y luego salir corriendo a aprender el oficio.&lt;/p&gt;

&lt;p&gt;Fue así como un día me vi obligado a aprender a manejar Adobe Illustrator e InDesign y me hice diseñador editorial y diagramador, sin dejar la redacción.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faesy9gpyw6k955rhrclh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faesy9gpyw6k955rhrclh.jpg" alt="Captura de pantalla del escritorio de Adobe InDesign" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente, en mayo de 2020 tomé la decisión que cambió mi vida profesional de forma definitiva: colgué mi estetoscopio, cerré el que era mi consultorio y me volqué de lleno al trabajo freelance. &lt;/p&gt;

&lt;p&gt;En junio surgió el ofrecimiento de actualizar un sitio web hecho en WordPress y Divi; dije que sí y corrí a aprender esas tecnologías. Después tuve que aprender Elementor y muchos otros plugins.&lt;/p&gt;

&lt;p&gt;Cuando entregué ese primer trabajo comprendí que me apasionaba esa área del desarrollo de páginas web. Desarrollar una web se convierte en una especie de juego y el tiempo se te va volando sin apenas darte cuenta. Además, los pagos en esa área superan en mucho los de los trabajos de redacción y/o diseño.&lt;/p&gt;

&lt;p&gt;Así que exploré más el tema y capté que tenía delante de mí un campo de acción que, además de gustarme muchísimo, está en plena expansión. Entendí así mismo que lo único que debía hacer era prepararme para hacerlo profesionalmente, generando con esta nueva carrera los ingresos que deseaba obtener.&lt;/p&gt;

&lt;p&gt;¿Cómo lo hice? ¿Cuánto tiempo duró? ¿Qué sucedió luego?&lt;/p&gt;

&lt;p&gt;Eso te lo relato en la segunda parte de este mismo artículo... ;) &lt;/p&gt;

&lt;p&gt;(Foto de banner de portada por &lt;a href="https://pixnio.com/es/objetos/computer/medico-oficina-ordenador-portatil-telefono-inteligente-portatil" rel="noopener noreferrer"&gt;PIXNIO&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>freelancer</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
