{"id":200183,"date":"2021-11-29T15:04:52","date_gmt":"2021-11-29T14:04:52","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=webstorm&#038;p=200183"},"modified":"2021-12-08T19:52:26","modified_gmt":"2021-12-08T18:52:26","slug":"webstorm-2021-3","status":"publish","type":"webstorm","link":"https:\/\/blog.jetbrains.com\/ja\/webstorm\/2021\/11\/webstorm-2021-3","title":{"rendered":"WebStorm 2021.3: Numerous JavaScript Improvements, Remote Development, and Better HTML Completion"},"content":{"rendered":"<p>WebStorm 2021.3, the last major update of the year, is here! This update is jam-packed with long-awaited enhancements, including support for remote development, improved HTML completion, reworked Deno integration, and others.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/webstorm\/download\" target=\"_blank\" rel=\"noopener\">DOWNLOAD WEBSTORM 2021.3<\/a><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/Release_Blog_image_1280x720_-WebStorm.png\" alt=\"released_blog_pic\" width=\"850\"><\/p>\n<p>If you only have a few minutes to explore what\u2019s new in WebStorm 2021.3, watch <a href=\"https:\/\/youtu.be\/Sqy0INe0ikA\" target=\"_blank\" rel=\"noopener\">this video<\/a> where <a href=\"https:\/\/twitter.com\/paulweveritt\" target=\"_blank\" rel=\"noopener\">Paul Everitt<\/a>, Developer Advocate at JetBrains, walks you through the most notable changes. If you feel like diving deeper, read on!<\/p>\n<p>The new features and improvements fall into these categories:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#javascript_typescript\">JavaScript &amp; TypeScript<\/a>: improvements for working with monorepos, faster indexing times for JavaScript files, a quick-fix for downloading remote ES6 modules, support for ES2022 private class members, and more.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#frameworks_technologies\">Frameworks &amp; Technologies<\/a>: easier management of project dependencies, reworked Deno plugin, support for Angular 13, better HTML completion, and more.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#remote_development\">Remote Development<\/a>: JetBrains Gateway for remote development, Node.js remote interpreter updates, and proxy support for SSH connections.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#docker\">Docker<\/a>: improved connection process, a new <em>Clean up<\/em> action, Minikube integration, support for Compose V2, and more.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#user_experience\">User Experience<\/a>: the ability to split the <em>Run<\/em> tool window, a new <em>Bookmarks <\/em>tool window, ML-based search for actions in <em>Search Everywhere<\/em>, and more.<\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3\/#version_control\">Version Control<\/a>: reorganized VCS settings, improved workflow for pushing commits, a new <em>Changes<\/em> tool window, and more.<\/li>\n<\/ul>\n<h2 id=\"javascript_typescript\">JavaScript &amp; TypeScript<\/h2>\n<h3 id=\"improved_support_for_monorepos\">Improved support for monorepos<\/h3>\n<p>This release comes with a number of improvements for working with monorepos. The most notable change is that automatically added imports now respect the project structure by treating each folder in the project with<em> package.json<\/em> as a separate package.<\/p>\n<h3 id=\"faster_indexing_of_javascript_files\">Faster indexing of JavaScript files<\/h3>\n<p>We understand that WebStorm\u2019s performance may not be optimal at times, so we\u2019re constantly working to improve it. Quite often, the changes related to performance are subtle, and you may not notice them unless you use a timer or a CPU profiler. In this release, we&#8217;ve managed to achieve more noticeable results, decreasing the indexing times for JavaScript files by 20%.<\/p>\n<p>We hope this improvement will help you to get working faster when you open a new project or do a massive Git update. Please note that the change will be less noticeable if your project mainly consists of TypeScript or other types of files.<\/p>\n<h3 id=\"support_for_urls_in_import_statements\">Support for URLs in import statements<\/h3>\n<p>Starting from v2021.3 you can download remote ES6 modules using a quick-fix on the import path in ES6 files. The module with all its dependencies will be downloaded and linked as a project library. The functionality should work the same way it does in the browser. To give it a try, place the caret on the import path, then press <em>\u2325\u23ce \/ Alt+Enter<\/em> and select <em>Download module<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/support-for-urls-in-import-statements.png\" alt=\"support-for-urls-in-import-statements\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/support-for-urls-in-import-statements.gif\"><\/p>\n<h3 id=\"support_for_es_private_class_members\">Refactoring support for ES2022 private class members<\/h3>\n<p>Support for private fields was added to WebStorm back in 2018. However, as this support was based on the old proposal from TC39, it has since diverged from the standard. To comply with the standard, we\u2019ve reworked the existing support from the ground up \u2013 WebStorm 2021.3 will support ES2022 private class members. When you use private names \u2013 elements starting with <em>#<\/em> \u2013 for your fields, accessors, or methods, everything should work as expected. For example, here\u2019s how the rename refactoring will work in v2021.3.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/rename-refactoring-private-class-members.png\" alt=\"rename-refactoring-private-class-members\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/rename-refactoring-private-class-members.gif\"><\/p>\n<h3 id=\"new_intentions_for_organizing_code\">New intentions for organizing code<\/h3>\n<p>There are two new intentions for organizing your code in WebStorm 2021.3.<\/p>\n<p>You can now quickly put comma-separated elements on one or multiple lines. The new intention works for array and object literals, parameter and argument lists, XML, HTML, and JSX attributes, and other similar elements.<\/p>\n<p>To try the intention, place the caret on the elements you want to alter, then press <em>\u2325\u23ce \/ Alt+Enter<\/em> and select either <em>Put comma-separated elements on one line<\/em> or <em>Put comma-separated elements on multiple lines<\/em> as appropriate. For XML, HTML, and JSX, you\u2019ll see slightly different wording for this action \u2013 <em>Put attributes on separate lines<\/em> or <em>Put attributes on one line<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/intention-for-putting-elements-on-separate-lines-and-back-webstorm.png\" alt=\"intention-for-putting-elements-on-separate-lines-and-back-webstorm\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/intention-for-putting-elements-on-separate-lines-and-back-webstorm.gif\"><\/p>\n<p>The second intention that was added relates to JSDoc comments. WebStorm can now help you replace single and multi-line comments with JSDoc comments in one click. As usual, you can access the available context actions with <em>\u2325\u23ce \/ Alt+Enter<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/replace-with-jsdoc-comment.png\" alt=\"replace-with-jsdoc-comment\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/replace-with-jsdoc-comment.gif\"><\/p>\n<h3 id=\"better_mapping_between_js_and_d_ts_files\">Better mapping between .js and .d.ts files<\/h3>\n<p>Another improvement in this release touches <em>.js <\/em>and <em>.d.ts<\/em> files. We\u2019ve improved mapping between them and added gutter icons for better navigation. To learn more about the changes, read <a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/10\/webstorm-2021-3-eap-4\/#better_mapping_between_js_and_d_ts_files\">this blog post<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/mapping-between-js-and-dts-files.png\" alt=\"mapping-between-js-and-dts-files\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/mapping-between-js-and-dts-files-1.gif\"><\/p>\n<h2 id=\"frameworks_technologies\">Frameworks &amp; Technologies<\/h2>\n<h3 id=\"new_inspection_for_updating_dependencies\">New inspection for updating dependencies<\/h3>\n<p>Over the years, we&#8217;ve <a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/installing-and-removing-external-software-using-node-package-manager.html#ws_npm_yarn_edit_package_json\" target=\"_blank\" rel=\"noopener\">added features<\/a> to help you add and update packages from the <em>package.json<\/em> file, as well as to help you get relevant information about those packages. With this release, we\u2019ve made some changes that should make the management of project dependencies easier.<\/p>\n<p>You can now update npm packages to the latest version right from the editor. Open your <em>package.json <\/em>file, place the caret on the package version you want to update, then press <em>\u2325\u23ce \/ Alt+Enter<\/em> and select <em>Update \u2018package name\u2019 to the latest version<\/em>. A quick-fix will also be shown when you hover over the package version.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/update-package-in-package-json-quick-fix.png\" alt=\"update-package-in-package-json-quick-fix\" width=\"800\"><\/p>\n<p>By default, the new inspection only provides a quick-fix, and doesn\u2019t highlight the outdated package in any way. If you want the warnings to be more prominent, you can change the inspection severity level in <em>Preferences \/ Settings | Editor | Inspections<\/em> \u2013 look for <em>Update package.json dependencies<\/em> there.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/update-inspection-severity-level-package-json.png\" alt=\"update-inspection-severity-level-package-json\" width=\"800\"><\/p>\n<p>Previously, WebStorm would allow you to manage your packages through the corresponding section in <em>Preferences \/ Settings | Languages and Frameworks | Node.js and NPM<\/em>. As only a few users managed their packages this way, we decided to remove this section and introduce a more straightforward way to handle the task \u2013 the new inspection described above.<\/p>\n<p>Lastly, we\u2019ve renamed the <em>Node.js and NPM<\/em> section in <em>Preferences \/ Settings<\/em> to <em>Node.js<\/em> to avoid any confusion. Just like before, you can use it to select a Node interpreter and the package manager of your choice: npm, pnpm, or Yarn.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/node-js-section-in-preferences.png\" alt=\"node-js-section-in-preferences\" width=\"800\"><\/p>\n<h3 id=\"reworked_deno_integration\">Reworked Deno integration<\/h3>\n<p>Last year we introduced support for Deno in WebStorm. It relied on WebStorm&#8217;s integration with the TypeScript service as well as on the <a href=\"https:\/\/github.com\/justjavac\/typescript-deno-plugin\" target=\"_blank\" rel=\"noopener\">typescript-deno plugin<\/a>. There were several drawbacks to this implementation, and it hasn\u2019t been working reliably lately. Because of this, we\u2019ve completely reworked it and migrated to the Deno LSP. We\u2019ve also fixed a bunch of known issues. You can learn more about the biggest changes that we have made <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/WEB-48625#focus=Comments-27-5325234.0-0\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>To learn more about working with Deno, see <a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2020\/06\/deno-support-in-jetbrains-ides\/\">this blog post<\/a>. It already includes information about the recent changes.<\/p>\n<h3 id=\"angular_support\">Angular 13 support<\/h3>\n<p>One of the most pressing problems that we\u2019ve addressed in this release is support for Angular 13. It was broken because of the changes to the Angular Package Format. WebStorm 2021.3 takes these changes into account and supports the new version of Angular.<\/p>\n<h3 id=\"improved_html_completion\">Improved HTML completion<\/h3>\n<p>We\u2019ve improved the way code completion works in HTML. Now, whenever you type a tag name or an abbreviation in the editor, or invoke code completion, WebStorm will show you relevant suggestions right away. Previously, it would only show them if you typed <em>&lt; <\/em> first. We realized that this wasn\u2019t very comfortable for those of you who aren\u2019t used to typing <em>&lt; <\/em>and <em>&gt;<\/em> and for those of you who aren\u2019t familiar with Emmet.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/html-tag-completion-webstorm.png\" alt=\"html-tag-completion-webstorm\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/html-tag-completion-webstorm.gif\"><\/p>\n<p>Additionally, code completion for character entity references should work better now.<\/p>\n<h3 id=\"type_checking_for_vue_and_react_properties\">Type checking for Vue and React properties<\/h3>\n<p>In between the 2021.2 and 2021.3 releases, we\u2019ve shipped a bunch of long-awaited fixes for Vue, including <a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/08\/webstorm-2021-2-1\/#improvements_for_vue\">support for <em>script setup<\/em><\/a>. In this release, we\u2019ve added another useful improvement \u2013 WebStorm 2021.3 supports TypeScript type checking in Vue templates. The IDE will let you know when an incorrect type is used in the expressions bound to properties.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/vue-typescript-type-checking.png\" alt=\"vue-typescript-type-checking\" width=\"800\"><\/p>\n<p>This will also work for React attributes.<\/p>\n<h3 id=\"new_features_for_http_client\">New features for HTTP client<\/h3>\n<p>In this release, we\u2019ve significantly improved WebStorm\u2019s built-in HTTP client. We\u2019ve added a lot of new functionality, including support for binary responses, output redirection to a custom file or directory, support for text and JSON streams, and support for HTTP request identifiers.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/image-in-response-webstorm.png\" alt=\"image-response-http\" width=\"800\"><\/p>\n<p>Read <a href=\"https:\/\/blog.jetbrains.com\/webstorm\/2021\/11\/webstorm-2021-3-beta\/#new_features_for_the_http_client\">this blog post<\/a> to take a closer look at these new features.<\/p>\n<h2 id=\"remote_development\">Remote Development<\/h2>\n<h3 id=\"running_webstorm_remotely\">Running WebStorm remotely<\/h3>\n<p>As one of the biggest and longest-awaited updates of this release \u2013 WebStorm now has <a href=\"https:\/\/www.jetbrains.com\/remote-development\/\" target=\"_blank\" rel=\"noopener\">support for remote development workflows<\/a>! You can connect to a remote machine with an IDE backend running and work on a project located there as if it were located on your local machine. We hope this helps you stay more productive and flexible while allowing you to work securely from anywhere.<\/p>\n<p>Support for remote development workflows is provided through our new application: JetBrains Gateway. It serves as an entry point for all your remote backends and doesn\u2019t require you to have an IDE installed on your local machine. You can grab the latest version of JetBrains Gateway from <a href=\"https:\/\/www.jetbrains.com\/remote-development\/gateway\/\" target=\"_blank\" rel=\"noopener\">our website<\/a>. Here\u2019s what you\u2019ll see after doing this:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/jetbrains-gateway-webstorm-blog.png\" alt=\"jetbrains-gateway\" width=\"800\"><\/p>\n<p>For more information on how to get started, please refer to the <a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/remote-development-starting-page.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.<\/p>\n<p>Please note that <strong>this is a beta version of the remote development functionality<\/strong> and we\u2019re still actively working to improve it. Please give the new functionality a try and let us know what you think. You can share your feedback or report any bugs <a href=\"https:\/\/youtrack.jetbrains.com\/newIssue?project=CWM\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<h3 id=\"development_with_remote_node_js\">Development with remote Node.js<\/h3>\n<p>For this release, we made a few significant improvements that support the workflow where Node.js is installed in Docker and then used by WebStorm\u2019s integrations with JavaScript tooling. Your IDE will now let you use the Node.js remote interpreter with ESLint, Mocha, Jest, npm, pnpm, and yarn.<\/p>\n<p>Node.js remote interpreter support for ESLint has been available since v2021.2 as an experimental feature. From here on out, it will be active by default.<\/p>\n<p>To try out the new feature, start by adding a remote Node.js interpreter. This can be done by going to <em>Preferences \/ Settings | Languages &amp; Frameworks | Node.js<\/em>, opening the drop-down list under the<em> Node interpreter<\/em> field and clicking <em>Add<\/em>. Then select <em>Add Remote\u2026<\/em> and specify one of the existing Docker images in the dialog that appears.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/node-remote-interpreter-settings.png\" alt=\"node-remote-interpreter-settings\" width=\"800\"><\/p>\n<p>Then go back to your <em>Preferences \/ Settings<\/em> and make sure the <em>Package manager<\/em> field has the correct path to the installation folder of a package manager in your Docker image.<\/p>\n<p>Then you can go back to the editor and install the dependencies in your project using Node.js and your package manager inside Docker. At this point, you should be able to start working as you normally would when using Node.js locally. For example, if you want to lint a JavaScript file with ESLint, open that file in the editor. The errors should be highlighted automatically.<\/p>\n<p>We\u2019ve also extended Node.js remote interpreter support to Mocha, Jest, npm, pnpm, and yarn scripts. You can find instructions for each of the supported technologies below:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/node-with-docker.html#ws_node_docker_lint\" target=\"_blank\" rel=\"noopener\">ESLint<\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/node-with-docker.html#ws_node_docker_test_app\" target=\"_blank\" rel=\"noopener\">Mocha and Jest<\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/node-with-docker.html#ws_node_docker_manage_dependencies\" target=\"_blank\" rel=\"noopener\">npm, pnpm, and yarn<\/a><\/li>\n<\/ul>\n<h3 id=\"proxy_support_for_ssh_connections\">Proxy support for SSH connections<\/h3>\n<p>You can now specify an HTTP or SOCKS proxy server for your <a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/create-ssh-configurations.html\" target=\"_blank\" rel=\"noopener\">SSH configuration<\/a> in <em>Preferences \/ Settings | Tools | SSH Configurations<\/em>.<\/p>\n<p>Under the new <em>HTTP\/SOCKS Proxy<\/em> section, you can select the proxy type, enter a hostname and a port, and, if necessary, apply authentication with a login and password.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/http-socks-proxy-settings-webstorm.png\" alt=\"http-socks-proxy-settings-webstorm\" width=\"800\"><\/p>\n<p>It is also possible to sync your SSH proxy settings with the global IDE ones. To do so, select the <em>Use global IDE proxy settings<\/em> checkbox.<\/p>\n<h2 id=\"docker\">Docker<\/h2>\n<h3 id=\"easier_connection_process\">Easier connection process<\/h3>\n<p>Connecting to Docker has become faster! You can simply double-click on the node you need or use the new shortcut: <em>\u2318\u23ce<\/em> on macOS or <em>Ctrl+Enter<\/em> on Windows and Linux. The <em>Start container<\/em> action can also be invoked with this shortcut.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/docker-connection.png\" alt=\"docker-connection\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/docker-connection.gif\"><\/p>\n<h3 id=\"new_clean_up_action\">New <em>Clean up<\/em> action<\/h3>\n<p>The new <em>Clean up<\/em> action works just like the <a href=\"https:\/\/docs.docker.com\/config\/pruning\/\" target=\"_blank\" rel=\"noopener\"><em>prune<\/em><\/a> terminal command. When you right-click on the <em>Networks<\/em>, <em>Volumes<\/em>, <em>Containers<\/em>, or <em>Images<\/em> node, you can select <em>Clean up<\/em>, and the IDE will delete the unused objects. You can also apply this action to the Docker root node to prune all the unnecessary objects in one click.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/docker-clean-up.png\" alt=\"docker-clean-up\" width=\"800\"><\/p>\n<h3 id=\"connection_to_docker_from_minikube\">Connection to Docker from Minikube<\/h3>\n<p>It is now easy to connect to a Docker daemon from Minikube. Go to <em>Preferences \/ Settings | Build, Execution, Deployment<\/em> and select the <em>Minikube<\/em> radio button. In the field next to it, the IDE will automatically display the detected Minikube&#8217;s docker-daemon environments that you can connect to.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/docker-minicube.png\" alt=\"docker-minicube\" width=\"800\"><\/p>\n<h3 id=\"support_for_compose_v\">Support for Compose V2<\/h3>\n<p>WebStorm supports <a href=\"https:\/\/docs.docker.com\/compose\/cli-command\/\" target=\"_blank\" rel=\"noopener\">Compose V2<\/a>, which allows you to run Docker Compose commands as <em>docker compose<\/em>, instead of <em>docker-compose<\/em> (with a dash).<\/p>\n<p>To activate this option, go to <em>Preferences \/ Settings | Build, Execution, Deployment | Docker | Tools<\/em> and tick the <em>Use Compose V2<\/em> checkbox.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/compose-v2.png\" alt=\"compose-v2\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/compose-v2.gif\"><\/p>\n<h3 id=\"image_layers\">Image layers<\/h3>\n<p>Image layers allow you to track all of the <a href=\"https:\/\/docs.docker.com\/storage\/storagedriver\/#images-and-layers\" target=\"_blank\" rel=\"noopener\">commands that are applied to images<\/a>. To access them, select an image and go to the <em>Layers<\/em> tab. From there, when you choose a command, you can click on the <em>Analyze image for more information<\/em> link on the right-hand side of the screen for more detailed information about the changes applied to each layer.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/image-layers.png\" alt=\"image-layers\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/image-layers.gif\"><\/p>\n<h3 id=\"save_container_as_image\">Save container as image<\/h3>\n<p>If you have a preconfigured container that you want to use later, you can save it as an image. Go to the <em>Services<\/em> tool window, right-click on the container, and select <em>Image | Save as a new Image<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/container-image.png\" alt=\"container-image\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/container-image-1.gif\"><\/p>\n<h3 id=\"podman_support\">Podman support<\/h3>\n<p>WebStorm now supports <a href=\"https:\/\/podman.io\/\" target=\"_blank\" rel=\"noopener\">Podman<\/a> as an alternative way to manage pods, containers, and images. Before using Podman in the IDE, please <a href=\"https:\/\/podman.io\/getting-started\/installation\" target=\"_blank\" rel=\"noopener\">configure a connection<\/a> first.<\/p>\n<p>Once Podman has been installed and configured on your OS, you can connect to it via <em>Preferences \/ Settings | Build, Execution, Deployment | Docker<\/em> by selecting the <em>TCP socket<\/em> radio button and filling out the required fields.<\/p>\n<h2 id=\"user_experience\">User Experience<\/h2>\n<h3 id=\"ability_to_split_the_run_tool_window\">Ability to split the <em>Run<\/em> tool window<\/h3>\n<p>Have several configurations running and want to see their results simultaneously? You can now split your <em>Run<\/em> tool window! To do this, drag the desired tab to the highlighted area and drop it there. To unsplit the tool window, you can drag the tab back or right-click the top pane and select <em>Unsplit<\/em> from the context menu.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/split-run-tool-window.png\" alt=\"split-run-tool-window\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/split-run-tool-window.gif\"><\/p>\n<h3 id=\"new_bookmarks_tool_window\">New <em>Bookmarks<\/em> tool window<\/h3>\n<p>In WebStorm, we had two very similar instances \u2013 <em>Favorites<\/em> and <em>Bookmarks<\/em>. The difference could sometimes be confusing, so we decided to stick to just one \u2013 <em>Bookmarks<\/em>. We\u2019ve reworked the workflow for this functionality and made a new tool window for it.<\/p>\n<p>From now on, any files, folders, and classes you mark as important with the <em>F3<\/em> shortcut on macOS or <em>F11<\/em> on Windows \/ Linux will be located under the new <em>Bookmarks<\/em> tool window.<\/p>\n<p>When you add a bookmark, WebStorm puts it in the node named after your project. The IDE automatically creates this node beforehand and stores all your prioritized items there by default. Any new bookmarks will appear at the top of the list inside this node. However, you can organize them manually by dragging them to new lists, which you can name as you like.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/bookmarks-tool-window-webstorm.png\" alt=\"bookmarks-tool-window-webstorm\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/bookmarks-tool-window-webstorm.gif\"><\/p>\n<h3 id=\"source_preview_for_show_usages\">Source preview for <em>Show Usages<\/em><\/h3>\n<p>The <a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/find-highlight-usages.html#find_usages_show_separate_window\" target=\"_blank\" rel=\"noopener\"><em>Show Usages<\/em><\/a> feature has received a small yet handy improvement in this release. When you view the usages of a symbol with <em>\u2325\u2318F7 \/ Ctrl+Alt+F7, <\/em>or by pressing <em>\u2318 \/ Ctrl<\/em> and clicking on the definition, you can now turn on the source code preview for a found usage by clicking the square icon.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/preview-in-show-usages-webstorm.png\" alt=\"preview-in-show-usages-webstorm\" width=\"800\"><\/p>\n<h3 id=\"ml_based_search_for_actions_in_search_everywhere\">ML-based search for actions in <em>Search Everywhere<\/em><\/h3>\n<p>When searching for actions, <a href=\"https:\/\/www.jetbrains.com\/help\/webstorm\/searching-everywhere.html\" target=\"_blank\" rel=\"noopener\"><em>Search Everywhere<\/em><\/a> in WebStorm is now powered by machine learning by default. We\u2019ve trained an ML-based formula that takes into account:<\/p>\n<ul>\n<li>The specific user\u2019s action usage history.<\/li>\n<li>Action usage frequencies across the whole user base.<\/li>\n<li>The lengths of the search query, the action\u2019s name, and so on.<\/li>\n<\/ul>\n<p>We hope you find that the ML-based models boost your search quality and return results tailored to your specific needs.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/ml-actions-2021.3.png\" alt=\"ml-actions-2021.3\" width=\"800\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/ml-actions-2021.2.png\" alt=\"ml-actions-2021.2\" width=\"800\"><\/p>\n<h3 id=\"improvements_to_the_terminal\">Improvements to the terminal<\/h3>\n<p>WebStorm\u2019s terminal now supports the new <a href=\"https:\/\/devblogs.microsoft.com\/commandline\/windows-command-line-introducing-the-windows-pseudo-console-conpty\/\" target=\"_blank\" rel=\"noopener\">ConPTY API<\/a> on Windows. Using this as a backend for the terminal helps address several problems that users were having with the old implementation, which was based on <a href=\"https:\/\/github.com\/rprichard\/winpty\" target=\"_blank\" rel=\"noopener\">winpty<\/a>. Also, 24-bit colors are now supported.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/conpty-support.png\" alt=\"conpty-support\" width=\"800\"><\/p>\n<p>Additionally, the newly added typeahead support predicts text modifications and displays them in light grey right away. This feature allows you to type in the terminal equally fast, whether you work on a local or a remote machine.<\/p>\n<h3 id=\"evaluate_expressions_from_the_debugger\">Evaluate expressions from the debugger<\/h3>\n<p>In this release, we\u2019ve improved the discoverability of the <em>Evaluate Expression<\/em> feature. Previously, many users resorted to using watches instead of the<em> Evaluate<\/em> dialog.<\/p>\n<p>Now, the <em>Evaluate Expression <\/em>field is accessible right in the <em>Debug<\/em> tool window, making the most convenient way to evaluate expressions more obvious.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/evaluate-expression-in-webstorm-2021-3.png\" alt=\"evaluate-expression-in-webstorm-2021-3\" width=\"800\"><\/p>\n<h3 id=\"built_in_troubleshooting_tool\">Built-in troubleshooting tool<\/h3>\n<p>WebStorm 2021.3 brings a new, faster way to diagnose and fix issues that prevent your IDE from working properly. If you have problems with WebStorm, invoke the new <em>Repair IDE&#8230;<\/em> action from the <em>File<\/em> menu. It will guide you through a sequence of steps to troubleshoot some of the most common problems.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/repair_ide.png\" alt=\"repair_ide\" width=\"800\"><\/p>\n<h3 id=\"accessibility_updates\">Accessibility updates<\/h3>\n<p>We&#8217;ve addressed some accessibility issues to make it more comfortable to work in the screen reader mode. We\u2019ve disabled the tool window widget pop-up and the quick documentation pop-up that used to appear on a mouse hover.<\/p>\n<p>We\u2019ve also fixed an issue with calling the <em>Go to Declaration or Usages<\/em> pop-up.<\/p>\n<p>The accessibility support on macOS has also been improved. We\u2019ve resolved several issues with voiceover focus and made it possible to create projects using a screen reader. To minimize distractions while you&#8217;re coding, we&#8217;ve decreased the number of help tooltips that play sounds.<\/p>\n<h3 id=\"ability_to_change_font_size_for_all_tabs\">Ability to change font size for all tabs<\/h3>\n<p>Did you know you can change the editor font size using the mouse wheel? Previously, this feature worked only for the current file. Now you can make it work for all opened files. Go to <em>Preferences \/ Settings | Editor | General<\/em>, tick <em>Change font size with Command \/ Ctrl + Mouse Wheel in<\/em>, and then choose <em>All editors <\/em>option.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/change-font-size.png\" alt=\"change-font-size\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/change-font-size-1.gif\"><\/p>\n<h2 id=\"version_control\">Version Control<\/h2>\n<h3 id=\"reorganized_vcs_settings\">Reorganized VCS settings<\/h3>\n<p>To help you configure your version control systems faster, we\u2019ve made VCS settings more discoverable and more clearly structured. Here are some of the changes you\u2019ll find in <em>Preferences \/ Settings | Version Control<\/em>.<\/p>\n<p>The <em>Version Control<\/em> node now lists all the available settings. You can navigate to the settings by clicking on them.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/webstorm-vcs-settings-2021-3.png\" alt=\"webstorm-vcs-settings-2021-3\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/webstorm-vcs-settings-2021-3.gif\"><\/p>\n<p>We improved the layout inside the <em>Git<\/em> node. We divided all the settings into sections that account for the most important processes: <em>Commit<\/em>, <em>Push<\/em>, and <em>Update<\/em>. Additionally, the parameters inside these sections are now organized more logically.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/git-node-in-webstorm-2021-3.png\" alt=\"git-node-in-webstorm-2021-3\" width=\"800\"><\/p>\n<p>We\u2019ve also added a separate node for <em>Directory mappings<\/em>, and the background operations are now switched on by default. The <em>Background<\/em> node no longer exists.<\/p>\n<h3 id=\"new_push_all_up_to_here_action\">New<em> Push All up to Here<\/em> action<\/h3>\n<p>Sometimes, you may have several commits that are ready to be shipped while others are still works in progress. In such cases, you may want to push only the ones you are sure about. With this release, WebStorm will let you push commits up to the one you have selected in the<em> Log<\/em> tab of the <em>Git<\/em> tool window. To do so, pick the necessary commit, right-click on it to open the context menu, and select a new <em>Push All up to Here <\/em>action.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/push-all-up-to-here-in-webstorm.png\" alt=\"push-all-up-to-here-in-webstorm\" width=\"800\"><\/p>\n<h3 id=\"checkout_and_rebase_onto_current_for_remote_branches\"><em>Checkout and Rebase onto Current<\/em> for remote branches<\/h3>\n<p>The <em>Checkout and Rebase onto Current<\/em> action allows you to check out the selected branch and rebase it on top of a branch that is currently checked out. Previously, this action was available for local branches only. Starting from v2021.3, you can apply this action to remote branches, too.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/09\/checkout-and-rebase-onto-current-for-remote-branches-webstorm.png\" alt=\"checkout-and-rebase-onto-current-for-remote-branches-webstorm\" width=\"800\"><\/p>\n<h3 id=\"new_changes_tool_window\">New <em>Changes<\/em> tool window<\/h3>\n<p>Previously, WebStorm would show you the difference between commits in a separate dialog. Starting from this release, the IDE will display this information in a new <em>Changes<\/em> tool window. To open the new tool window, in the<em> Log<\/em> tab of your version control system right-click on a revision and pick <em>Compare with Local<\/em> from the context menu.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/changes-window-compare.png\" alt=\"changes-tool-window\" width=\"800\"><\/p>\n<h3 id=\"align_changes_highlighting\">Align Changes Highlighting<\/h3>\n<p>We\u2019ve added the new <em>Align Changes Highlighting<\/em> option to the <em>Diff<\/em> screen settings that can be found under the gear icon. This feature makes the Diff easier to read, especially when there are complex modifications, because it aligns the unchanged lines so that they are displayed next to each other. This helps you see the code that has been added or removed more clearly.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/align-changes-highlighting.png\" alt=\"align-changes-highlighting\" width=\"800\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/11\/align-changes-highlighting.gif\"><\/p>\n<p>Those are the most notable highlights! For the full list of new features and enhancements available in <a href=\"https:\/\/www.jetbrains.com\/webstorm\/download\" target=\"_blank\" rel=\"noopener\">WebStorm 2021.3<\/a>, see the <a href=\"https:\/\/confluence.jetbrains.com\/display\/WI\/WebStorm+2021.3+Release+Notes\" target=\"_blank\" rel=\"noopener\">release notes<\/a>. Please share your feedback with us and report any issues you encounter to our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/WEB\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a>.<\/p>\n<p><em>The WebStorm team<\/em><\/p>\n","protected":false},"author":1219,"featured_media":204073,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[91,6734],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/webstorm\/200183"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/webstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/types\/webstorm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/users\/1219"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/comments?post=200183"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/webstorm\/200183\/revisions"}],"predecessor-version":[{"id":211556,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/webstorm\/200183\/revisions\/211556"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media\/204073"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=200183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=200183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=200183"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=200183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}