接触的新技术lerna,tailwindcss

89 阅读4分钟

前言

最近接触到一个新项目,项目架构是lerna + vue2 + tailwindcss,好多都是我之前没接触过的技术,包括像nvm,lerna,tailwind和momentJs,下面我做了小小的总结,方便以后自己做回顾,同时也希望能帮到读者了解这些技术

多包管理工具lerna

多包管理工具lerna,旨在优化基于git+npm的多package项目的包管理模式,想现在流行的vue-cli,create-react-app等脚手架工具都有用到lerna

作为一种多包依赖解决方案,lerna具有以下特点:

  • 可以管理公共依赖和单独依赖
  • 多package相互依赖直接内部 link,不必发版;
  • 支持项目的单独发布和全体发布;
  • 多包放一个git仓库,利于代码管理,如配置统一的代码规范

lerna的两种工作模式

  • Fixed/locked模式:lerna会把工程当作一个整体来对待,每次发布packages,都是全量发布,无论修改与否
  • Independent模式:lerna会配合Git,检查文件变动,只发布有改动的包

安装并初始化

全局安装lerna

yarn global add lerna 
#or     
npm install lerna -g

如果在已经存在的项目中安装lerna,使用以下方式

lerna bootstap

初始化项目和npm方式类似

//默认是固定模式,packages下的所有包共用一个版本号
lerna init
// 如果使用独立模式,需要在init后面加一个参数
lerna init --independent

执行上面的命令后,lerna会创建一个lerna.json配置文件和packages文件夹

{
  "version": "1.1.3",   // 版本号,用于指定 lerna 的版本

  "npmClient": "npm",   // 指定使用的 npm 客户端工具,可以是 npm 或者 yarn

  "command": {
    "publish": {   // 发布命令的配置
      "ignoreChanges": ["ignored-file", "*.md"],   // 忽略的更改文件,这些文件的更改不会触发发布操作
      "message": "chore(release): publish",   // 发布操作的提交消息
      "registry": "https://npm.pkg.github.com"   // 发布到的注册表,这里是 GitHub Packages 的注册表地址
    },

    "bootstrap": {   // 初始化命令的配置
      "ignore": "component-*",   // 忽略的初始化包,以匹配指定的通配符表达式
      "npmClientArgs": ["--no-package-lock"]   // 传递给 npm 客户端命令的额外参数
    }
  },

  "packages": ["packages/*"]   // 包含的包的路径,这里是使用通配符指定的包的路径模式
}

其他一些常见命令

除了上面的init命令外,项目使用过程中还会用到很多其他有用的命令

  • lerna create:此命令的作用是用来创建一个子包名为xx的项目。
  • lerna add:此命令用于安装依赖,格式为lerna add [@version] [–dev]。
  • lerna list:查看当前包名列表。
  • lerna link:将所有相互依赖的包符号链接在一起。
  • lerna exec:在每个包中执行任意命令。
  • lerna run:在每个包中运行npm脚本如果该包中存在该脚本。

参考文章

Lerna入门与实战-CSDN博客

tailwind

Tailwind CSS 是一个现代的、实用的 CSS 框架,Tailwind CSS 使用了一种称为 “原子类” 的概念,即为每个样式属性提供了单独的类,例如 p-4 表示设置 padding:4px,通过这种原子类,开发者无需编写自定义的 CSS 代码,可以通过简单地添加或删除类名来实现样式的改变,从而提高了开发效率。

这么多的样式,每次要写如果都要查文档,那不是很麻烦,vscode这里有一个插件,输入相关css属性就会有提示(记得先打个空格触发)

具体的安装和使用可以看神光大佬的这篇文章

快速掌握 Tailwind:最流行的原子化 CSS 框架 - 掘金

nvm

nvm 指的是 Node Version Manager(节点版本管理器)。它是一个用于管理和切换多个 Node.js 版本的工具

安装流程

一步到位——Node版本管理神器nvm安装教程(2023最新)_nvm安装node-CSDN博客

快速使用

安装目标版本。

nvm install v12.14.0

查看已安装 Node 版本

nvm ls

切换到已安装的其它版本

nvm use v16.17.0

时间处理插件momentJs

之前处理时间都是使用JS自带的Date对象,这个项目中使用了momentJs插件,实际使用下来发现真的很好用

比如获取昨天凌晨三点的时间 2023-12-18 03:00:00

this.$moment().subtract(1, 'day').startOf('day').add(3, 'hour').format('YYYY-MM-DD HH:mm:ss')

也可以通过valueOf()转为毫秒字符串

this.$moment().subtract(1, 'day').startOf('day').add(3, 'hour').valueOf()

获取上一个自然周的时间

startTime: this.$moment().subtract(1, 'weeks').startOf('week').format('YYYY-MM-DD')
endTime: this.$moment().subtract(1, 'weeks').endOf('week').format('YYYY-MM-DD')

详细的使用可以参考这个文章,讲得很详细

JS时间处理插件MomentJS - 掘金