Appearance
npm
config - 配置
通过 npm config 修改
proxy, https-proxy:指定 npm 使用的代理registry: 指定npm下载安装包时的源package-lock:是否默认生成package-lock文件(默认 true)
shell
# 淘宝源
npm config set registry http://registry.npm.taobao.org/
# 官方源
npm config set registry https://registry.npmjs.org/shell
# 查看npm配置
npm config ls
# 查看配置项
npm config get <key>
# 设置配置项
npm config set <key>
# 删除配置项
npm config delete <key>通过配置文件修改
npmrc 文件
shell
# 使用 命令 打开 npmrc
npm config edit # 局部
npm config edit -g # 全局配置文件重新初始化默认设置
第一行用空字符串替换配置文件
第二行用默认设置重新填充配置文件
shell
# 局部
echo "" > $(npm config get userconfig)
npm config edit
# 全局
echo "" > $(npm config get globalconfig)
npm config --global edit文件优先级 - 从高到低
- 工程内:
/path/to/my/project/.npmrc - 用户级:
~/.npmrc - 全局配置:
$PREFIX/etc/npmrc - npm 内置配置文件:
/path/to/npm/npmrc
可以配置独有的源,如:公司内网需要通过代理才能访问npm源,创建一个 .npmrc 文件来共享需要在团队间共享的 npm 运行相关配置。
并且作用域为项目级,更好隔离公司和个人
shell
proxy = http://proxy.example.com/
https-proxy = http://proxy.example.com/
registry = http://registry.example.com/install - 安装
shell
# 开发依赖
npm install <package> --save-dev | -D
# 生产依赖
npm install <package> --save-prod | -P
# 重新下载所有包
npm run rebuildenv - 环境变量
shell
# 列出所有环境变量
npm run env
# 输出环境变量
echo PATH
# 设置环境变量 - 绝对
echo PATH = /usr/local/lib
# 设置环境变量 - 相对
echo PATH = ${pwd}/lib/include # 使用${},也可以直接使用双引号init - 初始化
使用新的或已经存在 npm 包
bash
npm init <package-spec> (same as `npx <package-spec>)
npm init <@scope> (same as `npx <@scope>/create`)
aliases: create, innitnpm init <initializer>,将执行 create-<initializer>
举例:npm init vite
- 先找 create-vite 包
- 执行 npm exec create-vite 命令
- 执行 create-vite 包中 create-vite 脚本(bin)
other - 其他
shell
# 查看包信息
npm info axios
# 查看文档
npm docs axios
# 查看源码
npm repo axios
# 清除缓存
npm cache clean --force
# 查看版本
npm view axios versionspublish - 发布
目录结构
包含以下目录:
bin:可执行二进制文件
lib:js 代码
doc:文档
test:单元测试用例代码
发布包
- 注册 npm 账号
shell
npm adduser #根据提示输入用户名密码即可- 使用命令发布你的包
通过配置一个 .npmignore 文件来排除一些文件, 防止大量的垃圾文件推送到 npm。
.gitignore 文件也可以充当 .npmignore 文件
shell
npm publish- 安装
shell
npm install <package_name>- 更新包
使用 npm publish 命令发布,不过必须更改 npm 包的版本号
package.json
resolutions - 选择性依赖
resolutions :选择性依赖,控制依赖的版本
js
{
"name": "project",
"version": "1.0.0",
"dependencies": {
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
},
"resolutions": {
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
}
}直接依赖(foo/bar):foo 的直接依赖 bar,指向声明版本
间接依赖(foo/**/bar):foo 的间接依赖 bar,指向声明版本
所有(bar):不管位置,依赖bar都会指向声明版本
js
"resolutions": {
"bar": "1.0.0", // 所有依赖bar,1.0.0
"foo/bar": "1.0.0", // ,1.0.0
"foo/**/bar": "1.0.0"
}