All Tracks/review npm/
Đang tải...
Hướng dẫn thử thách
1 / 1

NPM Review

## What is npm? - **Definition**: npm is an online registry for open-source software, functioning like an "app store" for code. - **Official Meaning**: npm does not officially stand for "Node Package Manager"; it is a recursive backronymic abbreviation for "npm is not an acronym". - **Three Related Parts**: - **Website (npmjs.com)**: For looking up packages in the registry. - **Registry**: A large public database storing all packages. - **CLI (Command Line Interface)**: A tool installed with Node.js to manage project dependencies. - **Alternatives**: While npm is most widely used, popular alternatives include **Yarn**, **PNPM**, and **Bun**. ## The package.json File - **Purpose**: A configuration file that stores metadata, dependencies, and scripts for a Node.js project. - **Key Fields**: - `name` and `version`: Identify the project. - `main`: Specifies the entry point file, often `index.js`. - `license`: Defines legal terms (default is `ISC`). - `dependencies`: Packages required to run the app in production. - `devDependencies`: Tools only needed during development, such as testing frameworks. - **Creation**: - `npm init`: Starts an interactive setup process. - `npm init -y`: Installs a `package.json` with default values instantly. ## Semantic Versioning (SemVer) - **Format**: `MAJOR.MINOR.PATCH`. - **Rules**: - **MAJOR**: Breaking changes that can affect existing code. - **MINOR**: New features that are backwards compatible. - **PATCH**: Small bug fixes and improvements. - **Range Symbols**: - `^` (Caret): Allows minor and patch updates (e.g., `^1.2.3` allows `1.x.x`). - `~` (Tilde): Allows only patch updates (e.g., `~1.2.3` allows `1.2.x`). - `*` (Asterisk): Matches any version; used primarily for testing. ## Dependency Management - **Installation**: - `npm install <name>`: Adds a production dependency. - `npm install <name> -D`: Adds a development dependency. - `npm install <name>@<version>`: Installs a specific version. - **Node Modules & Locks**: - `node_modules/`: Contains the actual code for installed packages. - `package-lock.json`: Locks the exact versions of all dependencies and "child dependencies" to ensure consistency across environments. - **Removal**: `npm uninstall <name>` removes the package and updates `package.json`. - **Maintenance**: - `npm outdated`: Identifies which packages have newer versions available. - `npm update`: Updates packages within the allowed SemVer range. ## npm Scripts - **Function**: Custom commands defined in the `scripts` section of `package.json` to automate tasks. - **Execution**: Run via `npm run <script_name>`. - Shorthands exist for `start`, `test`, `stop`, and `restart` (e.g., `npm start`). - **Sequential Execution**: - `&&`: Runs the second command only if the first succeeds. - `;`: Runs commands one after another regardless of success. - **Concurrent Execution**: Use the `&` operator to run processes in the background. - **Arguments**: Pass arguments to scripts using the `--` separator (e.g., `npm start -- 8000`). ## Publishing to the npm Registry - **Registry Access**: A database of public and private packages. - **Publication Steps**: 1. Create a free account at `npmjs.com`. 2. Log in via terminal using `npm login`. 3. Ensure a unique `name` and valid `version` are in `package.json`. 4. Create a `README.md` and `.npmignore` (to exclude sensitive files). 5. Run `npm publish` (or `npm publish --access public` for scoped packages). - **Scopes**: Used to avoid name conflicts by publishing under `@username/package-name`. ## Module Systems in Node.js ### CommonJS (CJS) - **Default System**: The original way Node.js handles modules; loads synchronously. - **Syntax**: - **Import**: `const module = require('./path')`. - **Export**: `module.exports = { functionName }`. - **Identification**: Used for `.cjs` files or `.js` files when no `type` is specified in `package.json`. ### ES Modules (ESM) - **Standardized Format**: Modern JavaScript standard; loads asynchronously for efficiency. - **Syntax**: - **Export**: `export { name }` or `export default function`. - **Import**: `import { name } from './path.mjs'`. - **Identification**: Used for `.mjs` files or `.js` files when `package.json` contains `"type": "module"`.
Nhiệm vụ của bạn
Review the npm topics and concepts.
Vượt qua bài kiểm tra hiện tại để mở khóa bài tiếp theo.
main.sql
UTF-8 • Tab Size: 2Kiểm tra bài:⌘↵
Test Output
Thử thách này không có bài test tự động. Hãy quan sát kết quả trực tiếp ở khung Preview.