npm和yarn以及pnpm打包工具
一、node.js包管理工具
npm和yarn以及pnpm都是node.js的包管理工具。
★准备工作★
node.js下载地址https://nodejs.org/en/download/prebuilt-binaries
1.npm
npm简介
npm(Node Package Manager)是Node.js默认的包管理器,可以让开发者轻松地分享、安装和管理Node.js中的代码包和依赖项,它是构建现代 JavaScript 应用程序的关键组件之一。
npm安装
安装了node之后,npm会默认安装
tar zxf node-v21.7.3-linux-x64.tar.gz
mv node-v21.7.3-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/* /usr/local/bin
查看node和npm版本
node -v
npm -v
npm常用命令
# 列出当前项目中已安装的所有包及其依赖关系。
npm ls
# 查看指定包的详细信息。
npm view <package name>
# 查看指定包的摘要信息。
npm info <package name>
# 搜索与指定关键字匹配的包。
npm search <keywords>
# 创建一个新的 Node.js 应用程序或模块,并在 package.json 文件中定义依赖项。
npm init
# 安装依赖项。如果在安装时没有指定包的版本号,则将安装最新版本的包。
npm install
# 安装指定的依赖项,并将其添加到 package.json 文件中的 dependencies 中。
npm install <package name> --save
# 安装指定的开发依赖项,并将其添加到 package.json 文件中的 devDependencies 中。
npm install <package name> --save-dev
# 将包安装为全局包,以便在系统的任何位置使用它们。
npm install -g <package name>
# 更新 package.json 文件中指定的所有包的版本。
npm update
# 更新指定的包的版本。
npm update <package name>
# 卸载指定的依赖项,并将其从 package.json 文件中的 dependencies 或 devDependencies 中删除。
npm uninstall <package name>
# 启动 Node.js 应用程序。
npm start
# 13、运行测试套件。
npm test
# 运行 package.json 文件中指定的脚本。
npm run <script name>
# 清除 npm 的缓存。
npm cache clean
# 检查当前项目中已安装的包是否有过时的版本。
npm outdated:
# 将当前目录下的代码发布为一个 npm 包。
npm publish
# 查看当前登录的 npm 用户名。
npm whoami
2.yarn
yarn是一个JavaScript的包管理器,它是由 Facebook、Google、Tilde 以及其他社区成员共同维护的开源项目。Yarn 在 NPM 的基础上进行了改进和增强,旨在提高依赖包的安装速度和可靠性。
yarn安装
yarn需要通过npm安装。
# 全局安装
npm install -g yarn
# 单独项目安装
npm install yarn
# 安装指定版本
npm install -g yarn@1.22.19
# 查看版本
yarn -v
注意:全局安装可以在任何位置使用yarn,单独安装只能在对应目录下使用
3.pnpm
pnpm安装
跟yarn一样,pnpm的安装也需要通过npm安装。
# 全局安装
npm install -g pnpm
# 安装指定版本
npm install -g pnpm@8.15.0
# 查看版本
pnpm -v
项目打包构建
三种管理工具的打包命令:
1.npm打包
npm install && npm run build
# 或者另外一种方式
npm ci && npm run build
当你需要在持续集成或者部署环境中安装依赖时,使用npm ci是更好的选择,因为它能确保依赖的一致性和可靠性。相比之下,npm install则更适合用于开发环境,因为它提供了更多的灵活性和交互性。
2.yarn打包
yarn install && yarn run build
# 或者另外一种方式
yarn --frozen-lockfile && yarn run build
3.pnpm打包
pnpm install --frozen-lockfile && pnpm run build
–frozen-lockfile是yarn和pnpm包管理器中的一个命令,它与npm ci命令类似,具有以下特点:
- 1.可靠性:–frozen-lockfile选项确保pnpm严格按照yarn.lock和pnpm-lock.yaml文件中指定的依赖版本和哈希值安装依赖,确保安装的依赖与开发环境完全一致。
- 2.快速:yarn和pnpm本身就比npm更快,–frozen-lockfile选项进一步优化了安装速度,因为它不需要再次解析和验证yarn.lock和pnpm-lock.yaml文件。
- 3.一致性:与npm ci类似,–frozen-lockfile会在安装前清空node_modules目录,确保安装一个干净的环境。
- 4.适用于自动化环境:这个命令非常适合用于持续集成(CI)等自动化构建环境,因为它能保证依赖的一致性和可靠性。
CI/CD流程优化
如果拥有多个项目架构的话可以在CI/CD打包流程中用脚本去优化打包,通过项目的文件类型去判断使用的打包工具。
脚本如下:
#!/bin/sh
cd /var/www/html
if [ -f yarn.lock ];then
echo 'build type: yarn.lock'
yarn --frozen-lockfile && yarn run build
elif [ -f package-lock.json ];then
echo 'build type: package-lock.json'
npm ci && npm run build
elif [ -f pnpm-lock.yaml ];then
echo 'build type: pnpm-lock.yaml'
pnpm install --frozen-lockfile && pnpm run build
else
echo "Lockfile not found." && exit 1
fi