分类
devops

nodejs

如何使用bash查看nodejs有什么内置模块

node -p "require('module').builtinModules"
[
  '_http_agent',         '_http_client',        '_http_common',
  '_http_incoming',      '_http_outgoing',      '_http_server',
  '_stream_duplex',      '_stream_passthrough', '_stream_readable',
  '_stream_transform',   '_stream_wrap',        '_stream_writable',
  '_tls_common',         '_tls_wrap',           'assert',
  'assert/strict',       'async_hooks',         'buffer',
  'child_process',       'cluster',             'console',
  'constants',           'crypto',              'dgram',
  'diagnostics_channel', 'dns',                 'dns/promises',
  'domain',              'events',              'fs',
  'fs/promises',         'http',                'http2',
  'https',               'inspector',           'inspector/promises',
  'module',              'net',                 'os',
  'path',                'path/posix',          'path/win32',
  'perf_hooks',          'process',             'punycode',
  'querystring',         'readline',            'readline/promises',
  'repl',                'stream',              'stream/consumers',
  'stream/promises',     'stream/web',          'string_decoder',
  'sys',                 'timers',              'timers/promises',
  'tls',                 'trace_events',        'tty',
  'url',                 'util',                'util/types',
  'v8',                  'vm',                  'wasi',
  'worker_threads',      'zlib'
]

npm 镜像

npm的配置文件为用户根目录下的:~/.npmrc(Windows路径为:C:\Users\<UserName>\.npmrc),您可以点击此处直接下载配置文件,或者运行如下命令设置:

npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm cache clean -f

华为开源镜像站同时也提供了工具类加速镜像,可以通过如下的命令设置加速地址:

 npm config set disturl https://mirrors.huaweicloud.com/nodejs
 npm config set sass_binary_site https://mirrors.huaweicloud.com/node-sass
 npm config set phantomjs_cdnurl https://mirrors.huaweicloud.com/phantomjs
 npm config set chromedriver_cdnurl https://mirrors.huaweicloud.com/chromedriver
 npm config set operadriver_cdnurl https://mirrors.huaweicloud.com/operadriver
 npm config set electron_mirror https://mirrors.huaweicloud.com/electron/
 npm config set python_mirror https://mirrors.huaweicloud.com/python
 ```

### npm的包依赖一共有多少种周期

npm的包依赖周期一共有5种:

|周期|说明|对应命令|
|--|--|--|
|dependencies|这是最常见的依赖类型,表示包依赖于另一个包来正常工作。|`--save`|
|devDependencies|这是开发依赖类型,表示包依赖于另一个包来进行开发、测试或构建。|`--save-dev`|
|peerDependencies|这是同伴依赖类型,表示包依赖于另一个包的特定版本。|`--save-peer`|
|optionalDependencies|这是可选依赖类型,表示包可以依赖于另一个包,但不强制要求。|`--save-optional`|
|bundledDependencies|这是捆绑依赖类型,表示包将另一个包捆绑在一起发布。|`--save-bundle`|


注意:`--save-prod` 是 `--save` 的别名或更明确的写法,表示“保存为生产依赖”(production dependencies),即安装的包会被记录在 dependencies


### npm init
```bash
npm create vite@latest
npm init vite@latest
npx create-vite@latest
## 以上三个等效

npm 的@scope是什么

在npm中,@scope是指一个包的作用域或命名空间。它用于标识一个包属于哪个组织或团队。

@scope通常用于以下情况:

  1. 组织包:当一个组织或团队创建一个包时,他们可以使用@scope来标识这个包属于哪个组织或团队。例如,@google/cloud表示这个包属于Google Cloud团队。
  2. 私有包:当一个开发者创建一个私有包时,他们可以使用@scope来标识这个包属于哪个组织或团队。例如,@mycompany/mypackage表示这个包属于mycompany组织。
  3. 命名空间@scope也可以用于创建一个命名空间,用于组织相关的包。例如,@mycompany/utils表示这个包属于mycompany组织的utils命名空间。

使用@scope的好处包括:

  • 避免命名冲突:使用@scope可以避免包名冲突,因为不同的组织或团队可以使用相同的包名,但具有不同的@scope
  • 提高包的可发现性:使用@scope可以提高包的可发现性,因为开发者可以通过搜索@scope来找到相关的包。
  • 简化包的管理:使用@scope可以简化包的管理,因为开发者可以通过@scope来管理相关的包。

在npm中,@scope是通过在包名前添加@符号来指定的。例如,@mycompany/mypackage表示这个包属于mycompany组织。

以下是npm中@scope的语法:

npm install @scope/package-name

例如:

npm install @google/cloud

这将安装Google Cloud团队的cloud包。

包管理器 管理文件 说明
npm package.json 定义项目的依赖和元数据
package-lock.json 锁定依赖版本,确保一致性
Yarn package.json 与 npm 相同,用于定义项目的依赖和元数据
yarn.lock 锁定依赖版本,确保一致性
pnpm package.json 与 npm 和 Yarn 相同
pnpm-lock.yaml 锁定依赖版本
Bower bower.json 定义项目的前端依赖
Volta package.json 与 npm 相同
volta.json 定义项目的 Node.js 版本和工具
Rush rush.json 管理大型 monorepo 项目的依赖和构建
Lerna lerna.json 管理 monorepo 项目的多个包
特性 Tailwind CSS Sass Less
类型 工具优先的 CSS 框架 CSS 预处理器 CSS 预处理器
语法 实用类(Utility-first) 嵌套规则、变量、混合宏 嵌套规则、变量、混合宏
学习曲线 中等,需熟悉类名 中等,需学习 Sass 语法 中等,需学习 Less 语法
主题定制 通过配置文件定制 通过变量和混合宏定制 通过变量和混合宏定制
响应式设计 内置响应式设计类 需手动实现响应式 需手动实现响应式
生态系统 丰富的插件和社区支持 广泛的社区支持 较小的社区支持
生成的 CSS 文件大小 较大,需使用 PurgeCSS 减小 生成的 CSS 文件较小 生成的 CSS 文件较小
适用场景 快速原型、设计系统 复杂项目、需要重用的样式 复杂项目、需要重用的样式
兼容性 兼容所有现代浏览器 兼容所有现代浏览器 兼容所有现代浏览器
开发体验 通过类名快速构建 UI 通过变量和混合宏提高可维护性 通过变量和混合宏提高可维护性