This is a very good question. There are advantages and disadvantages. I discussed the topic so that you can express your opinion.
Should you submit the node_modules folder to Git?
I mentioned Git, but the same applies to any version control system you happen to use
This is a very good question. There are advantages and disadvantages.
I recommend defaulting toIs notSubmit the node_modules folder and add it to your
You may have special needs and need to reverse this decision.
I discussed the topic so that you can express your opinion.
These are some parameters in favor of not submitting node_modules
You keep the Git history clean when you add a new package, you will store
package-lock.jsonFile changes. When you decide to update the package version, all you store is
package-lock.jsonIs a relatively new feature of npm,Shrink wrapCommands used in the past
You can avoid having to put hundreds of MB of dependencies in the repository, which means that it will be faster to use it over time. Switching branches and checking out code are two operations that are greatly affected by the size of the repository.
When using branches, you may encounter merge conflicts, which are not limited to code, but also involve dependent code. This is not easy to handle and may waste a lot of time for you. Avoid putting
If the dependencies are changed, the pull request or merge will involve more files in the process. The tool slows down and even decides not to show the complete difference (for example, GitHub)
If you deploy to a platform different from the development computer, you need to recompile the native node module (common use case: development on Mac, deployment on Linux). You need to call
npm rebuild, Which will make the server out of sync.
Not submitting node_modules means you need to
package-lock.json) As a mandatory step. This is great because you may not be diligent, and if you don't, some npm operations may be interrupted.
Tip: You don’t need to use a specific version
If used alone
node_modulesThe folder you basically want to submit
devDependenciesAnd there is no (easy) way to get rid of them in the production version.
What may cause you to submit node_modules and how to mitigate them
npmThe author of the package may delete the package from the npm registry. It happened in the famous
left-pad incident in 2016 (read more). For popular software packages, this rarely happens. If this happens, you may no longer be able to use that particular function.
You might also argue
npmThere is no guarantee that it will exist indefinitely, it may disappear, so to ensure that you have the complete code of the application in the future, an easy way is to submit it with the application.
Every time you use a package, please create a fork on GitHub. Keep it up to date with the origin at regular intervals (can be done automatically).
This is not always feasible, because a software package can have dozens of dependencies of its own.
You can use a dedicated repository server for your project and use that server to host all dependencies.
Another reason for submitting dependencies is that if you find a bug or want to add something to the library, you can quickly edit the code.
This is a double-edged sword: if you do, then if a new version is released, you will lose the ability to upgrade the package, which is very useful for quick, temporary repairs.
The best solution is to submit a PR that performs the required functions to the original project or branch it, and then use the branch as a dependency.
Download mine for freeNode.js manual
More node tutorials:
- Introduction to npm package manager
- Introduction to Node.js
- HTTP request using Axios
- Where to host Node.js applications
- Use Node.js to interact with Google Analytics API
- npx node package runner
- package.json guide
- Where does npm install packages?
- How to update Node.js
- How to use or execute packages installed with npm
- package-lock.json file
- Semantic version control using npm
- Should you submit the node_modules folder to Git?
- Update all Node dependencies to the latest version
- Use Node.js to parse JSON
- Find the installed version of the npm package
- Node.js flow
- Install an older version of the npm package
- Get the current folder in Node
- How to record objects in Node
- Use export to expose functions from Node files
- Difference between node and browser
- Use Node to make HTTP POST requests
- Use Node to get HTTP request body data
- Node buffer
- A brief history of Node.js
- How to install Node.js
- How to use Node.js REPL
- Node, accepts parameters from the command line
- Use Node to output to the command line
- Accept input from the command line in Node
- Use `npm uninstall` to uninstall the npm package.
- npm global or local package
- npm dependencies and devDependencies
- Node.js event loop
- Understanding process.nextTick()
- Understanding setImmediate()
- Node event emitter
- Set up an HTTP server
- Use Node to make HTTP requests
- Node fs module
- HTTP request in Node using Axios
- Use Node to read files
- Node file path
- Write file with Node
- Node file statistics
- Use file descriptors in Node
- Use folders in Node
- Node path module
- Node http module
- Combine WebSockets with Node.js
- Basic knowledge of using MySQL and Node
- Error handling in Node.js
- Pug Guide
- How to read environment variables from Node.js
- How to exit from Node.js program
- Node os module
- Node event module
- Node, the difference between development and production
- How to check if a file exists in Node.js
- How to create an empty file in Node.js
- How to delete files using Node.js
- How to get the last update date of a file using Node.js
- How to write a JSON object to a file in Node.js
- Why use Node.js in the next project?
- Run web server from any folder
- How to use MongoDB with Node.js
- Use Chrome DevTools to debug Node.js applications
- What is pnpm?
- Node.js runtime v8 options list
- How to solve the "missing write access permission" error when using npm
- How to enable ES modules in Node.js
- How to use Node.js to generate child processes
- How to get the parsed body and the original body at the same time in Express
- How to handle file upload in Node.js
- What is the peer dependency in the node module?
- How to write a CSV file using Node.js
- How to use Node.js to read CSV files
- Node core module
- Use Node.js to increase the number of multiple folders at once
- How to print canvas to data URL
- How to create and save images using Node.js and Canvas
- How to download images using Node.js
- How to batch rename files in Node.js
- How to get the names of all files in a folder in Node
- How to use promise and wait function based on Node.js callback
- How to test NPM packages locally
- How to check the current Node.js version at runtime
- How to use Sequelize to interact with PostgreSQL
- Use Node.js to serve HTML pages
- How to solve the error that util.pump in Node.js is not a function