NPM相关问题

汇总常见技术疑问、解决思路和实践经验。

问题答案 12026年6月27日 15:14

How to list npm user-installed packages

To list the npm packages successfully installed by a user in their local environment, follow these steps:Open the command line interface.Navigate to the project's root directory using the command to ensure you're viewing the dependencies for the specific project. If you want to view globally installed packages, skip this step.Run the following commands:To view locally installed packages for the project:To view globally installed packages:This command lists top-level globally installed packages (i.e., excluding their dependencies). The parameter ensures only top-level packages are displayed, not all dependencies.After executing the command, the terminal outputs a tree structure showing all installed packages and their versions.For example, running in a project containing and might produce:This confirms successful installation of v4.17.1 and v4.17.20.Additional parameters can customize the output:to show only production dependencies.to show only development dependencies.to output results in JSON format.These commands and parameters help any npm user quickly inspect installed package information.
问题答案 12026年6月27日 15:14

Why does "npm install" rewrite package- lock.json ?

By default, running does not regenerate the entire file. serves two primary purposes:When there is no file, it installs the dependencies defined in and generates a new file. This new file ensures that future installations get the same version of dependencies, making the project more stable and reliable.When a file already exists, installs the exact versions of dependencies based on this file, ensuring that all developers using the project have a consistent dependency tree.However, when you add new packages or update existing package versions—such as using or —npm updates the and adjusts the accordingly to reflect the new dependency information. In this case, the file is modified, but not entirely rewritten; instead, it is updated or new entries for the relevant dependencies are added.For example, suppose I am developing a Node.js application using Express.js and want to install a new dependency, such as . I would run:This command adds to the file and updates the file to include the exact version information for and all its sub-dependencies.If I have already installed but want to upgrade to a new version, I can specify the version:This updates both the and files to reflect the chosen version. Such updates are selective and apply only to the modified or added dependencies.If you need to regenerate the file, you can delete the existing file and the directory, then run . This will recreate a new file based on the dependencies in and install all dependencies. However, in daily development, this is typically unnecessary.
问题答案 12026年6月27日 15:14

How to properly upgrade node using nvm

First, nvm (Node Version Manager) is a tool for managing multiple Node.js versions, enabling users to easily switch between and install different versions. The following steps detail how to upgrade Node.js using nvm:Install or Verify nvm Installation:Before upgrading Node.js with nvm, ensure it is installed on your system. Verify this by running the command in your terminal:If nvm is not installed, consult the official nvm GitHub repository for installation instructions.List Available Node.js Versions:To check available Node.js versions, use nvm to list all remote versions:This command displays all available versions, including Long-Term Support (LTS) releases.Install a New Node.js Version:When installing a specific version, use:Replace with a specific version number (e.g., ) or use to install the latest stable version:This installs the most recent stable Node.js release.Switch to the New Version:After installation, switch to the new version with:Similarly, substitute with the installed version or use to select the latest version.Verify the New Node.js Version:Confirm the current version after completing the steps:This should display the selected version.Upgrade npm (if needed):Occasionally, upgrade npm (Node Package Manager) using:Set the Default Node.js Version:To use the new version in all new terminal sessions, set it as the default:Reinstall Global Packages if Necessary:After upgrading Node.js, you may need to reinstall global packages. Do this by checking current global packages and reinstalling them in the new version:Replace with the previous Node.js version you used.By following these steps, you can safely and correctly upgrade Node.js using nvm without disrupting older versions or their dependencies.
问题答案 12026年6月27日 15:14

What is the difference between bower and npm

Different Focus Areas:Bower: Bower is a package manager specifically designed for frontend technologies, handling libraries and frameworks for HTML, CSS, and JavaScript. Its key feature is resolving dependencies for frontend libraries; for example, when you need to include a frontend library, Bower automatically downloads other required libraries.npm: npm (Node Package Manager) was initially created for managing Node.js modules. However, with the evolution of frontend toolchains, npm is now widely used in frontend projects to install and manage dependencies such as React, Angular, or Webpack.Project Structure:Bower: Typically installs dependencies into the directory of the project.npm: Places dependencies into the directory.Package Contents:Bower: Usually contains compiled code, i.e., the final code that runs directly in the browser.npm: May include source code, compiled code, or command-line tools.Dependency Management:Bower: Uses the file to manage project dependencies.npm: Uses the file to manage dependencies, and starting from npm v5, it generates a (or in Yarn) to lock dependency versions, ensuring consistency across different environments.Command-Line Interface:Bower: Provides simple commands for installing and managing frontend libraries, such as and .npm: Offers a comprehensive command-line interface for installing packages, running scripts, and publishing modules, with commands like , , and .Community and Ecosystem:Bower: Was widely used in early frontend development but has significantly declined due to the evolution of frontend toolchains and npm's maturity. Bower has been deprecated since 2017, and users are advised to migrate to npm.npm: Boasts a large community and a rich module ecosystem. With Node.js's popularity, npm has become the largest module repository in the JavaScript world.For example, suppose you're developing a web application and need to include jQuery and Bootstrap. With Bower, you simply run , and Bower downloads these libraries along with their dependencies (e.g., jQuery might be depended on by Bootstrap) to the directory. However, with the popularity of tools like Webpack and npm scripts, you're more likely to use npm now to manage these dependencies by running and organizing the libraries with your application code using tools like Webpack.In summary, Bower and npm are designed for different problems and use cases. With the continuous development of frontend toolchains, npm has become a universal dependency manager for both frontend and backend, while Bower has gradually faded from mainstream development practices.
问题答案 12026年6月27日 15:14

How can I uninstall npm modules in NodeJS ?

In Node.js, you can uninstall installed modules using npm (Node Package Manager). The basic command format for uninstalling npm modules is as follows:Here are the detailed steps and examples:Uninstalling Modules Globally:If the module is globally installed, you need to use the flag to uninstall it. For example, to globally uninstall the module named , you can use the following command:Uninstalling Modules Locally:If the module is installed as a project dependency, you can directly execute the uninstall command in the project root directory. For example, if your project uses , the command to uninstall it is:This will remove the module from your directory and update the dependency information in both and files.Uninstalling Modules from Dependency Lists:If you used the , , or flags when installing the module, you should consider whether to remove it from the relevant dependency lists during uninstallation. For example, if was installed as a development dependency (dev dependency), the command to uninstall and update is:Verifying Correct Uninstallation:After uninstallation, you can verify if the module has been correctly uninstalled by checking the project's directory or using the command.Note that sometimes, even after uninstalling a module, its dependencies may still remain in the directory. To thoroughly clean up unnecessary modules, you can use the command to remove all modules not specified in the file from your project.This covers the basic steps for uninstalling npm modules in Node.js.
问题答案 12026年6月27日 15:14

How can I update Node.js and NPM to their latest versions?

To upgrade Node.js and npm to the latest versions, follow these steps based on your operating system and installation method. Here are general steps applicable to multiple operating systems:Using Package Managers to UpdateFor macOS and Linux Users:Using Homebrew (if you installed Node.js via Homebrew on macOS):Install Homebrew:Update Node.js:Using n or nvm (Node.js version managers):Install n (a simplified version manager):Update to the latest stable version using n:Alternatively, install nvm (Node Version Manager):Install the latest Node.js version using nvm:For Windows Users:If you installed via a Windows package manager like Chocolatey, use the following command:Alternatively, you can use nvm-windows, a Windows-specific version of nvm:Manual UpdateIf you didn't use any package manager, you can manually download the latest Node.js installer:Visit the Node.js official website Node.js.Download the appropriate installer for your operating system.Run the downloaded installer and follow the instructions to complete the installation.Updating npmTypically, npm updates automatically when you upgrade Node.js. However, if you need to manually update npm, use the following command:This will update npm to the latest version.Verifying the UpdateAfter installation, you can run the following commands to verify the versions of Node.js and npm:Running these commands will show your current Node.js and npm versions, confirming the update was successful.Remember that upgrading to the latest version may cause compatibility issues with older projects, so it's recommended to back up your projects before updating. Additionally, some projects may depend on specific Node.js versions, so ensure you read the project documentation before upgrading to avoid potential version conflicts.
问题答案 12026年6月27日 15:14

What 's the difference between tilde(~) and caret(^) in package.json ?

When you see tilde (~) and caret (^) in the dependencies list of your package.json file, both are used to specify version ranges for npm packages. However, they define different version ranges.Tilde (~)The version number specified after the tilde (~) means that when you run , npm will install the latest patch version within the same minor version as specified. That is, it allows installation of packages with the same minor version but a higher patch version.Example:If the dependency in package.json is written as "library": "~1.2.3", then the installed version will be the latest within the 1.2.x series, where x represents the latest patch version. For instance, if the latest version is 1.2.4, you will get 1.2.4. However, it will not install 1.3.0, as that constitutes a new minor version.Caret (^)The version number specified after the caret (^) means that when you run , npm will install the latest version within the same major version as specified, allowing changes to minor and patch versions.Example:If the dependency in package.json is written as "library": "^1.2.3", then the installed version will be the latest within the 1.x.x series, as long as the major version does not change (e.g., not to 2.0.0). Therefore, versions like 1.3.0 or 1.4.1 are permitted.SummaryIn short, caret (^) allows broader version updates, suitable for packages that follow semantic versioning (semver) where minor and patch updates only include backward-compatible changes. Tilde (~) is more conservative, allowing only patch-level updates, suitable for scenarios requiring cautious version management.In actual development, the choice depends on your control over dependency updates and trust in third-party libraries. If you trust the library maintainer to adhere strictly to semantic versioning principles, using ^ makes it easier to obtain feature updates and bug fixes. If you prefer to update dependencies more cautiously to avoid potential incompatibility, using ~ is safer.
问题答案 12026年6月27日 15:14

How to pass arbitrary argument with pnpm

When using to execute commands, if you need to pass arbitrary parameters to scripts or commands, you can typically add these parameters directly after the command. However, if you need to pass parameters to an npm script run via , you must add before the parameters to ensure they are correctly passed.For example, if you have an npm script named and you want to pass some arbitrary parameters to it, you can do this:In this example, and are the parameters to be passed to the script. The ensures that passes the subsequent parameters unchanged to , rather than consuming them itself.Another example: if you use the command to run a tool and need to pass parameters to that tool, you typically do not need . For instance:In this case, is directly passed to .Note that pnpm's behavior may differ slightly from npm and yarn, but all of them support using the delimiter to pass additional parameters.