diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml deleted file mode 100644 index 7a28d18..0000000 --- a/.github/workflows/build-docs.yml +++ /dev/null @@ -1,55 +0,0 @@ -# github pages: https://github.com/marketplace/actions/github-pages-action#table-of-contents -# How to cache node_modules in GitHub Actions with Yarn: https://dev.to/mpocock1/how-to-cache-nodemodules-in-github-actions-with-yarn-24eh - -name: GitHub Pages - -on: - push: - branches: - - master - # trigger deployment manually - workflow_dispatch: - -jobs: - build-docs: - runs-on: ubuntu-22.04 - permissions: - contents: write - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - steps: - - uses: actions/checkout@v4 - with: - # fetch all commits to get last updated time or other git log info - fetch-depth: 0 - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: '18.x' - - - name: Get yarn cache - id: yarn-cache - run: echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "${GITHUB_OUTPUT}" - - - name: Cache dependencies - uses: actions/cache@v3 - with: - path: ${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Install packages - if: steps.yarn-cache.outputs.cache-hit != 'true' - run: yarn --frozen-lockfile - - # run build script - - name: Build VitePress site - run: yarn docs:build - - - name: Deployment - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/.vitepress/dist \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 3506f81..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -docs/.vitepress/dist/ -docs/.vitepress/cache/ \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..950aa8f --- /dev/null +++ b/404.html @@ -0,0 +1,21 @@ + + +
+ + +set password for `database_username`@localhost = password('your_new_password');
-- 创建数据库\nCREATE DATABASE `database_name`;\n\n-- 赋权\nCREATE USER 'database_username'@'localhost' IDENTIFIED BY 'username_password';\nGRANT ALL PRIVILEGES ON `database_name`.* TO `database_username`@'localhost';\n\n-- 查看用户权限情况\nSHOW GRANTS FOR 'database_username'@'localhost';\n\n-- 回收权限和用户\nREVOKE ALL PRIVILEGES ON `database_name`.'table_name' FROM `database_username`@'localhost';\nDROP USER `database_username`@'localhost';
UPDATE `table_name` SET `field_name` = \n replace(`field_name`, '[string_to_find]', '[string_to_replace]');
table_name
待修改的表名filed_name
替换的字段名[string_to_find]
待查找到字符串[string_to_replace]
替换的字符串在访达中,使用下面的快捷键可以切换显示和隐藏隐藏文件:
Command + Shift + .
打开命令行终端,输入以下命令:
# 显示隐藏文件
+defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder
+
+# 隐藏隐藏文件
+defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder
系统设置
-> 桌面与程序坞
-> 自动显示和隐藏程序坞
切换它的状态。
或者使用下面的快捷键:
Command + Alt + D
系统设置
-> 桌面与程序坞
-> 自动显示和隐藏菜单栏
-> 选择 始终
则可以隐藏。
在 MacOS 14 系统开始,切换顶部菜单栏显示和隐藏状态的操作路径修改为: 系统设置
-> 控制中心
-> 自动隐藏和显示菜单栏
-> 选择 始终
则可以隐藏。
命令 | 说明 |
---|---|
docker --version | Docker版本 |
docker info | Docker信息 |
命令 | 说明 |
---|---|
docekr stats | 容器资源使用情况 |
docker ps | 查看运行中的容器 |
docker ps -a | 查看所有容器 |
docker run <image> | 从镜像运行容器 |
docker run -d <image> | 从镜像运行容器(后台) |
docker run --name ‹name> <image> | 从镜像运行容器并命名 |
docker run -it <image> <bash> | 从镜像运行容器并交互 |
docker run -it --rm <image> <bash> | 从镜像运行容器并删除 |
docker stop <container> | 停止容器 |
docker start <container> | 启动容器 |
docker restart <container> | 重启容器 |
docker rm <container> | 删除容器 |
docker exec -it <container> /bin/bash | 进入容器 |
docker logs <container> | 查看容器日志 |
docker top <container> | 查看容器进程 |
docker inspect <container> | 查看容器详细信息 |
docker cp <container>:<path> <path> | 从容器复制文件到主机 |
docker cp <path> <container>:<path> | 从主机复制文件到容器 |
docker commit <container> <image> | 从容器创建镜像 |
docker export <container> -o <file.tar> | 导出容器为 tar 文件 |
命令 | 说明 |
---|---|
docker images | 查看所有镜像 |
docker pull <image> | 从 Docker Hub 拉取镜像 |
docker push <name>:<tag> | 推送镜像到 Docker Hub |
docker rmi <image> | 删除镜像 |
docker build -t <name>:<tag> <path> | 从 Dockerfile 构建镜像 |
docker tag <image> <new_name>:<tag> | 使用新名称或版本标记镜像 |
docker save <image> -o <path> | 保存镜像到文件 |
docker load -i <path> | 从文件加载镜像 |
docker inspect <image> | 查看镜像详细信息 |
docker import <file.tar> <image_name> | 导入 tar 文件为镜像 |
命令 | 说明 |
---|---|
docker network ls | 查看所有网络 |
docker network create <name> | 创建网络 |
docker network inspect <network> | 查看网络详细信息 |
docker network rm <network> | 删除网络 |
docker network connect <network> <container> | 连接容器到网络 |
docker network disconnect <network> <container> | 从网络断开容器 |
docker network disconnect --force <network> <container> | 强制从网络断开容器 |
docker network prune | 删除所有未使用的网络 |
命令 | 说明 |
---|---|
docker volume ls | 查看所有卷 |
docker volume create <name> | 创建卷 |
docker volume inspect <volume> | 查看卷详细信息 |
docker volume rm <volume> | 删除卷 |
docker volume prune | 删除所有未使用的卷 |
docker run -v <volume>:/path <image> | 在容器中挂载卷 |
docker volume mount <volume> | 挂载卷 |
docker volume unmount <volume> | 卸载卷 |
docker volume update <volume> | 更新卷 |
命令 | 说明 |
---|---|
docker logs <container> | 查看容器日志 |
docker logs -f <container> | 查看容器日志并实时更新 |
docker logs --tail <number> <container> | 查看容器日志的最后几行 |
命令 | 说明 |
---|---|
docker system prune | 清理未使用的镜像、容器、卷和网络 |
docker system prune -a | 清理所有未使用的镜像、容器、卷和网络 |
docker system prune -f | 强制清理未使用的镜像、容器、卷和网络 |
docker system prune -a -f | 强制清理所有未使用的镜像、容器、卷和网络 |
docker container prune | 清理未使用的容器 |
docker image prune | 清理未使用的镜像 |
docker volume prune | 清理未使用的卷 |
docker network prune | 清理未使用的网络 |
docker system df | 查看Docker资源使用情况 |
命令 | 说明 |
---|---|
docker-compose up | 启动并运行所有服务 |
docker-compose down | 停止并删除所有服务 |
docker-compose ps | 查看所有服务状态 |
docker-compose logs | 查看所有服务日志 |
只需在浏览器控制台中运行以下命令,就可以编辑当前打开的网页内容。
document.designMode = 'on'; // 启用
+document.designMode = 'off'; // 禁用
alias nah='git reset --hard;git clean -df'
alias gst='git status'
alias gaa='git add --all'
alias gl='git pull'
命令 | 说明 |
---|---|
git init | 初始化仓库 |
git clone <url> | 克隆仓库 |
命令 | 说明 |
---|---|
git config --global user.name <name> | 设置用户名 |
git config --global user.email <email> | 设置用户邮箱 |
git config --global color.ui true | 设置 Git 命令行颜色显示 |
git config --global core.editor <editor> | 设置默认文本编辑器 |
git config --list | 查看配置信息 |
命令 | 说明 |
---|---|
git add <file> | 添加文件到暂存区 |
git add . | 添加所有文件到暂存区 |
git commit -m "<message>" | 提交暂存区文件并添加提交信息 |
git status | 查看仓库状态 |
git diff | 查看文件差异 |
git diff --staged | 查看暂存区文件差异 |
git log | 查看提交历史 |
git rm <file> | 删除文件 |
命令 | 说明 |
---|---|
git branch | 查看分支列表 |
git branch <new-branch> | 创建分支 |
git checkout <branch> | 切换分支 |
git checkout -b <branch> | 创建并切换分支 |
git merge <branch> | 合并分支 |
git branch -d <branch> | 删除分支 |
git branch -D <branch> | 强制删除分支 |
git branch -m <old> <new> | 重命名分支 |
命令 | 说明 |
---|---|
git reset --hard HEAD | 撤销所有更改并重置到最新提交 |
git checkout -- <file> | 放弃对文件的修改 |
git revert <commit> | 撤销指定提交 |
git reset <commit> | 重置到指定提交 |
git reset --hard <commit> | 重置到指定提交并删除工作区 |
命令 | 说明 |
---|---|
git remote add <name> <url> | 添加远程仓库 |
git remote -v | 查看远程仓库信息 |
git fetch | 拉取远程仓库更新 |
git pull | 拉取远程仓库更新并合并到当前分支 |
git push origin <branch> | 推送本地分支到远程仓库 |
git push origin --delete <branch> | 删除远程分支 |
git remote remove <name> | 删除远程仓库 |
git remote set-url <name> <url> | 修改远程仓库地址 |
git remote update <name> | 更新远程仓库 |
git remote show <name> | 查看远程仓库详细信息 |
git remote prune <name> | 删除远程仓库中已经不存在的分支 |
git remote rename <old> <new> | 重命名远程仓库 |
git remote set-head <name> <branch> | 设置远程仓库的默认分支 |
命令 | 说明 |
---|---|
git stash | 暂存当前工作区更改 |
git stash list | 查看暂存列表 |
git stash apply <stash> | 应用指定暂存更改 |
git stash pop <stash> | 应用并删除指定暂存更改 |
git stash drop <stash> | 删除指定暂存更改 |
git stash clear | 清空暂存列表 |
git stash branch <branch> <stash> | 从指定暂存创建新分支 |
git stash show <stash> | 查看指定暂存更改的详细信息 |
命令 | 说明 |
---|---|
git tag | 查看所有标签 |
git tag <tagname> | 创建标签 |
git tag -a <tagname> -m "message" | 创建带有说明的标签 |
git tag -d <tagname> | 删除标签 |
git show <tagname> | 查看标签详细信息 |
git push origin <tagname> | 推送标签到远程仓库 |
git push origin --tags | 推送所有标签到远程仓库 |
git fetch --tags | 拉取所有标签 |
git checkout <tagname> | 切换到指定标签 |
git tag -d <tagname> | 删除本地标签 |
git push origin :refs/tags/<tagname> | 删除远程标签 |
命令 | 说明 |
---|---|
git diff | 查看工作区和暂存区之间的差异 |
git diff HEAD | 查看工作区和最近一次提交之间的差异 |
git diff <branch> | 查看工作区和指定分支之间的差异 |
命令 | 说明 |
---|---|
git show <commit> | 查看提交详细信息 |
git log --oneline --graph --decorate --all | 查看提交历史和分支图 |
git blame <file> | 查看文件每一行最后修改的提交信息 |
git shortlog | 查看提交历史 |
命令 | 说明 |
---|---|
git fetch <remote> | 拉取远程仓库的更新 |
git pull <remote> <branch> | 拉取远程分支的更新 |
git push <remote> <branch> | 推送本地分支的更新到远程仓库 |
git cherry-pick <commit> | 合并指定提交到当前分支 |
命令 | 说明 |
---|---|
git clean -f | 删除未跟踪的文件 |
git clean -fd | 删除未跟踪的文件和目录 |
git gc | 清理仓库,回收空间 |
git diff-tree -r --no-commit-id --name-only {commitId} | xargs tar -rf files.tar
+
+# 获取最后一次提交时变更的所有文件
+git diff-tree -r --no-commit-id --name-only \`git rev-parse HEAD\` | xargs tar -rf files.tar
{commandId}
提交历史记录的 Hash 值files.tar
将变更的文件打包到当前目录下的 files.tar
文件中git rev-parse HEAD
获取最后一次提交的 Hash 值SSH 端口转发(SSH 隧道技术)允许将端口从一台计算机重定向到另一台计算机。
它是一种通过本地和远程服务器之间的加密 SSH 连接安全传输数据的方法。
本地转发(local forwarding)指的是,创建一个本地端口,将发往该端口的所有通信都通过 SSH 服务器,转发到指定的远程服务器的端口。这种情况下,SSH 服务器只是一个作为跳板的中介,用于连接本地计算机无法直接连接的远程服务器。本地转发是在本地计算机建立的转发规则。
它的语法如下,其中会指定本地端口(local_port)、SSH 服务器(ssh_server)、远程服务器(remote_host)和远程端口(remote_port)
ssh -L -N -f [local_port]:[remote_host]:[remote_port] [username]@[ssh_server]
上面命令中,有三个配置参数。
-L
:转发本地端口。-N
:不发送任何命令,只用来建立连接。没有这个参数,会在 SSH 服务器打开一个 Shell。-f
:将 SSH 连接放到后台。没有这个参数,暂时不用 SSH 连接时,终端会失去响应。例如,假设用户想要访问位于 IP 地址为 192.168.1.100
的远程服务器上的 SSH 服务(端口 22),而远程服务器 192.168.1.100
对端口 22
的直接访问被阻止。
用户可以使用本地端口转发将本地 2022
端口重定向到远程服务器的 22
端口。
ssh -L -N 2022:192.168.1.100:22 user@remote_server
如果经常使用本地转发,可以将设置写入 SSH 客户端的用户个人配置文件(~/.ssh/config
)。
Host test.example.com
+LocalForward client-IP:client-port server-IP:server-port
远程转发指的是在远程 SSH 服务器建立的转发规则。
它跟本地转发正好反过来。建立本地计算机到远程 SSH 服务器的隧道以后,本地转发是通过本地计算机访问远程 SSH 服务器,而远程转发则是通过远程 SSH 服务器访问本地计算机。它的命令格式如下。
ssh -R [remote_port]:[target_host]:[target_port] -N remote-host
上面命令中,-R
参数表示远程端口转发,remote-port是远程 SSH 服务器的端口,target-host和target-port是目标服务器及其端口,remote-host 是远程 SSH 服务器。
远程转发主要针对内网的情况。
内网某台服务器 localhost
在 80 端口开了一个服务,可以通过远程转发将这个 80 端口,映射到具有公网 IP 地址的 my.public.server
服务器的 8080 端口,使得访问my.public.server:8080
这个地址,就可以访问到那台内网服务器的 80 端口。
ssh -R 8080:localhost:80 -N my.public.server
上面命令是在内网 localhost
服务器上执行,建立从 localhost
到 my.public.server
的 SSH 隧道。
运行以后,用户访问 my.public.server:8080
,就会自动映射到 localhost:80
。
经常需要在本地创建 VitePress 项目来编写文档记录一些代码、经验或总结。
project_name='code-snippets' # 假定项目名称是 code-snippets
+
+mkdir $project_name && cd $project_name # 创建并更改为新目录
+
+git init # 初始化git仓库
+
+# 添加忽略目录到 .gitignore 文件
+echo 'node_modules/
+docs/.vitepress/dist/
+docs/.vitepress/cache/' > .gitignore
然后,使用 yarn 包管理器进行初始化。
yarn init
一般情况执行完成上面的命令后一直按回车使用默认值会生成默认的内容。
{
+ "name": "code-snippets",
+ "description": "Record some code snippets at work.",
+ "repository": "https://github.com/curder/code-snippets.git",
+ "author": "curder <q.curder@gmail.com>",
+ "license": "MIT",
+ "type": "module",
+ "engines": {
+ "node": ">= 18"
+ },
+}
将 VitePress 和 Vue 作为项目的依赖。
yarn add -D vitepress
+
+# 创建第一个文档
+mkdir docs && echo '# Hello VitePress' > docs/README.md
+echo '<!--@include: ./README.md-->' > docs/index.md
添加配置到 package.json
文件,这些配置用于在本地执行命令,比如:
{
+ "name": "code-snippets",
+ "description": "Record some code snippets at work.",
+ "repository": "https://github.com/curder/code-snippets.git",
+ "author": "curder <q.curder@gmail.com>",
+ "license": "MIT",
+ "type": "module",
+ "engines": {
+ "node": ">= 18"
+ },
+ "scripts": {
+ "docs:dev": "vitepress dev docs",
+ "docs:build": "vitepress build docs",
+ "docs:preview": "vitepress preview docs"
+ },
+ "devDependencies": {
+ "vitepress": "^1.3.4"
+ }
+}
# 在本地环境执行下面的命令编译项目。
+yarn docs:dev
+
+# 生成环境使用
+yarn docs:build
VitePress 将在 localhost:5173 启动热重载开发服务器。
使用下面的命令在 docs/.vitepress/
目录下创建 config.ts
文件,用于个性化当前 VitePress 项目:
touch docs/.vitepress/config.ts
大致的内容如下:
import {defineConfig} from 'vitepress'
+
+export default defineConfig({
+ lang: "zh-CN",
+ base: "/code-snippets/",
+ title: "代码片段",
+ description: "记录一些工作中常用的代码片段。",
+ lastUpdated: true,
+ themeConfig: {
+ logo: "",
+ siteTitle: "代码片段",
+ outline: {
+ label: "章节导航",
+ level: 'deep',
+ },
+ lastUpdated: {
+ text: "最后更新时间",
+ },
+ docFooter: {
+ prev: '上一页',
+ next: '下一页'
+ },
+ editLink: {
+ pattern: "https://github.com/curder/code-snippets/edit/master/docs/:path",
+ text: '编辑它'
+ },
+ socialLinks: [
+ {icon: 'github', link: 'https://github.com/curder/code-snippets'}
+ ],
+ nav: nav(),
+ sidebar: {
+ "/guide": sidebarGuide(),
+ }
+ }
+});
+
+
+function nav()
+{
+ return [
+ //
+ ];
+}
+
+function sidebarGuide()
+{
+ return [
+ //
+ ];
+}
如果代码仓库是放在 GitHub 上,可以直接将代码部署到 github.io
上。
# 创建构建文档的配置文件
+mkdir -p .github/workflows && touch .github/workflows/build-docs.yml
并将下面的内容添加到 ./.github/workflows/build-docs.yml
文件中。
# github pages: https://github.com/marketplace/actions/github-pages-action#table-of-contents
+# How to cache node_modules in GitHub Actions with Yarn: https://dev.to/mpocock1/how-to-cache-nodemodules-in-github-actions-with-yarn-24eh
+
+name: GitHub Pages
+
+on:
+ push:
+ branches:
+ - master
+ # trigger deployment manually
+ workflow_dispatch:
+
+jobs:
+ build-docs:
+ runs-on: ubuntu-24.04
+ permissions:
+ contents: write
+ concurrency:
+ group: \${{ github.workflow }}-\${{ github.ref }}
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ # fetch all commits to get last updated time or other git log info
+ fetch-depth: 0
+
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: '18.x'
+
+ - name: Get yarn cache
+ id: yarn-cache
+ run: echo "YARN_CACHE_DIR=$(yarn cache dir)" >> "\${GITHUB_OUTPUT}"
+
+ - name: Cache dependencies
+ uses: actions/cache@v3
+ with:
+ path: \${{ steps.yarn-cache.outputs.YARN_CACHE_DIR }}
+ key: \${{ runner.os }}-yarn-\${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ \${{ runner.os }}-yarn-
+
+ - name: Install packages
+ if: steps.yarn-cache.outputs.cache-hit != 'true'
+ run: yarn --frozen-lockfile
+
+ # run build script
+ - name: Build VitePress site
+ run: yarn docs:build
+
+ - name: Deployment
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: \${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./docs/.vitepress/dist
经过上面的配置后在推送代码到 master
分支时会直接触发部署功能,部署到 gh-pages
新分支。
通过在项目的 Settings
-> Pages
-> Branch
,比如这里的 Pages 中的 Branch 分支选择 gh-pages
,等待一段时间就可以看到项目部署到了 YOUR_GITHUB_USERNAME.github.io/PROJECT_NAME。
获取构建状态
在 GitHub 项目仓库下选择 Actions
-> GitHub Pages
-> Create status badge
,点击按钮后复制弹出层中的构建 markdown 内容。
构建的 markdown 内容 YOUR_GITHUB_USERNAME/PROJECT_NAME
[](https://github.com/curder/code-snippets/actions/workflows/build-docs.yml)
将构建状态放到项目首页文件
将上面复制的内容可以通过编辑器写入到 docs/README.md
文件中,也可以通过下面的命令追加到文件的末尾。
echo '[](https://github.com/curder/code-snippets/actions/workflows/build-docs.yml)' >> docs/README.md
以上是针对使用 VitePress 写文档的一些经常使用到的流程。
',34),e=[l];function k(E,d,r,g,o,c){return a(),i("div",null,e)}const u=s(p,[["render",k]]);export{F as __pageData,u as default}; diff --git a/assets/others_vitepress_getting-started.md.XNXCvQdc.lean.js b/assets/others_vitepress_getting-started.md.XNXCvQdc.lean.js new file mode 100644 index 0000000..5743791 --- /dev/null +++ b/assets/others_vitepress_getting-started.md.XNXCvQdc.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a2 as n}from"./chunks/framework.DjyxGeXd.js";const t="/code-snippets/assets/select-pages-branch.DauNl06c.png",h="/code-snippets/assets/create-status-badge.C-4BjhuO.png",F=JSON.parse('{"title":"VitePress 初始化","description":"","frontmatter":{},"headers":[],"relativePath":"others/vitepress/getting-started.md","filePath":"others/vitepress/getting-started.md","lastUpdated":1725346490000}'),p={name:"others/vitepress/getting-started.md"},l=n("",34),e=[l];function k(E,d,r,g,o,c){return a(),i("div",null,e)}const u=s(p,[["render",k]]);export{F as __pageData,u as default}; diff --git a/assets/programming-language_node_compile-static-resources-using-docker.md.DKsCtySX.js b/assets/programming-language_node_compile-static-resources-using-docker.md.DKsCtySX.js new file mode 100644 index 0000000..9263890 --- /dev/null +++ b/assets/programming-language_node_compile-static-resources-using-docker.md.DKsCtySX.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a2 as e}from"./chunks/framework.DjyxGeXd.js";const F=JSON.parse('{"title":"使用 docker 编译静态资源","description":"","frontmatter":{},"headers":[],"relativePath":"programming-language/node/compile-static-resources-using-docker.md","filePath":"programming-language/node/compile-static-resources-using-docker.md","lastUpdated":1697686188000}'),t={name:"programming-language/node/compile-static-resources-using-docker.md"},n=e('docker run -it --rm --name docker-node-compile-assets -v "$PWD":/home/node/app -w /home/node/app node:16.19 yarn && yarn prod
--rm
容器退出时自动移除-v
挂载目录-w
工作目录在使用 npm 过程中经常会遇到无法下载包的问题,通常是由于网络原因导致的。为了解决这个问题,我们可以使用 npm 镜像来加速下载。
镜像的基本操作包括查看镜像、设置镜像和取消镜像。
npm config get registry
yarn config get registry
以阿里云镜像为例。
设置镜像命令如下:
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
使用下面的命令安装包时可以临时设置镜像,只对当前命令有效。
npm install --registry https://registry.npmmirror.com packages
yarn add --registry https://registry.npmmirror.com packages
使用下面的命令可以重置镜像为 npm
默认的 registry.npmjs.com 镜像,yarn
默认的 registry.yarnpkg.com 镜像:
npm config delete registry
yarn config delete registry
功能/工具名称 | yarn | npm |
---|---|---|
安装所有依赖 | yarn / yarn install | npm install |
添加依赖 | yarn add packages | npm install packages |
删除依赖 | yarn remove packages | npm uninstall packages |
更新依赖 | yarn upgrade yarn upgrade --registry https://registry.npmmirror.com | npm update |
搜索软件包 | — | npm search packages |
清空缓存 | yarn cache clean -f | npm cache clean -f |
下面整理一些国内常用的镜像地址。
镜像地址:https://registry.npmmirror.com
文档地址:npmmirror 镜像站
实时同步自 npmjs.com 官方
.yarnrc
/ .npmrc
配置registry "https://registry.npmmirror.com"
+
+sass_binary_site "https://registry.npmmirror.com/-/binary/node-sass/"
+electron_mirror "https://registry.npmmirror.com/-/binary/electron/"
+sqlite3_binary_host_mirror "https://registry.npmmirror.com/-/binary/sqlite3/"
+profiler_binary_host_mirror "https://registry.npmmirror.com/-/binary/node-inspector/"
+chromedriver_cdnurl "https://registry.npmmirror.com/-/binary/chromedriver"
+sentrycli_cdnurl "https://registry.npmmirror.com/-/binary/sentry-cli"
镜像地址:https://mirrors.cloud.tencent.com/npm/
文档地址:腾讯云 npm 镜像
同步频率为每天一次,同步的时间为凌晨0点-2点。
镜像地址:https://mirrors.huaweicloud.com/repository/npm/
文档地址:华为云 npm 镜像
`,34),n=[r];function p(l,o,d,h,c,k){return e(),s("div",null,n)}const b=a(i,[["render",p]]);export{m as __pageData,b as default}; diff --git a/assets/programming-language_node_npm-mirrors.md.44F04AjQ.lean.js b/assets/programming-language_node_npm-mirrors.md.44F04AjQ.lean.js new file mode 100644 index 0000000..b25ba7f --- /dev/null +++ b/assets/programming-language_node_npm-mirrors.md.44F04AjQ.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as e,a2 as t}from"./chunks/framework.DjyxGeXd.js";const m=JSON.parse('{"title":"NPM 镜像","description":"","frontmatter":{},"headers":[],"relativePath":"programming-language/node/npm-mirrors.md","filePath":"programming-language/node/npm-mirrors.md","lastUpdated":1706252976000}'),i={name:"programming-language/node/npm-mirrors.md"},r=t("",34),n=[r];function p(l,o,d,h,c,k){return e(),s("div",null,n)}const b=a(i,[["render",p]]);export{m as __pageData,b as default}; diff --git a/assets/programming-language_php_composer-mirrors.md.DdRfjVik.js b/assets/programming-language_php_composer-mirrors.md.DdRfjVik.js new file mode 100644 index 0000000..9bca438 --- /dev/null +++ b/assets/programming-language_php_composer-mirrors.md.DdRfjVik.js @@ -0,0 +1,39 @@ +import{_ as s,c as a,o as i,a2 as e}from"./chunks/framework.DjyxGeXd.js";const F=JSON.parse('{"title":"Composer 镜像","description":"","frontmatter":{},"headers":[],"relativePath":"programming-language/php/composer-mirrors.md","filePath":"programming-language/php/composer-mirrors.md","lastUpdated":1706240946000}'),n={name:"programming-language/php/composer-mirrors.md"},p=e(`同步频率不详
由于默认情况下执行 composer 各种命令是去国外的 composer 官方镜像源获取需要安装的具体软件信息,所以在不使用代理的情况下,从国内访问国外服务器的速度相对比较慢。
镜像的基本操作,包括查看镜像、设置镜像和取消镜像等。
composer config -gl # 查看全局镜像配置
+
+composer config -l # 查看当前项目镜像配置
命令行模式
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 配置全局镜像
+
+composer config repo.packagist composer https://mirrors.aliyun.com/composer/ # 配置当前项目镜像
修改 composer.json
文件
{
+ "repositories":[
+ {
+ "description":"阿里云镜像",
+ "type":"composer",
+ "url":"https://mirrors.aliyun.com/composer/",
+ "canonical":false
+ }
+ ]
+}
配置阿里云和官方两个源,阿里云镜像站下载文件出错时再从官方源上下载。
# 全局配置
+composer config -g --unset repos.packagist
+
+# 当前项目配置
+composer config --unset repos.packagist
取消镜像后,默认使用官方源 https://repo.packagist.org
。
composer
命令行工具 # 1. 下载
+wget https://mirrors.aliyun.com/composer/composer.phar
+
+# 2. 赋权
+chmod +x composer.phar
+
+# 3. 安装
+mv composer.phar /usr/local/bin/composer
# 1. 下载
+wget https://mirrors.tencent.com/composer/composer.phar
+
+# 2. 赋权
+chmod +x composer.phar
+
+# 3. 安装
+mv composer.phar /usr/local/bin/composer
composer
命令安装扩展包时增加 -vvv
可输出详细的信息,可以查看配置的镜像是否生效,命令如下:
composer require alibabacloud/sdk -vvv
使用下面的命令可以诊断系统以识别常见错误:
composer diagnose
composer
版本 # 更新到最新版
+composer self-update
+
+# 更新到1.x版本
+composer self-update --1
+
+# 更新到指定版本
+composer self-update 2.5.4
更多版本可以查看官方地址:composer download
若项目之前已通过其他源安装,则需要更新 composer.lock
文件,执行命令:
composer update --lock
通过下面的命令可以清除缓存:
composer clear-cache
镜像地址:https://mirrors.aliyun.com/composer/
实时同步自 Packagist 官方
镜像地址:https://mirrors.tencent.com/composer/
同步频率为每天一次,同步的时间为凌晨0点-2点。
镜像地址: https://packagist.mirrors.sjtug.sjtu.edu.cn/
文档地址:sjtu composer mirror
`,42),t=[p];function l(h,o,r,k,c,d){return i(),a("div",null,t)}const m=s(n,[["render",l]]);export{F as __pageData,m as default}; diff --git a/assets/programming-language_php_composer-mirrors.md.DdRfjVik.lean.js b/assets/programming-language_php_composer-mirrors.md.DdRfjVik.lean.js new file mode 100644 index 0000000..866da0e --- /dev/null +++ b/assets/programming-language_php_composer-mirrors.md.DdRfjVik.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a2 as e}from"./chunks/framework.DjyxGeXd.js";const F=JSON.parse('{"title":"Composer 镜像","description":"","frontmatter":{},"headers":[],"relativePath":"programming-language/php/composer-mirrors.md","filePath":"programming-language/php/composer-mirrors.md","lastUpdated":1706240946000}'),n={name:"programming-language/php/composer-mirrors.md"},p=e("",42),t=[p];function l(h,o,r,k,c,d){return i(),a("div",null,t)}const m=s(n,[["render",l]]);export{F as __pageData,m as default}; diff --git a/assets/programming-language_php_laravel_blade_each.md.QuFh7yxU.js b/assets/programming-language_php_laravel_blade_each.md.QuFh7yxU.js new file mode 100644 index 0000000..b8dc244 --- /dev/null +++ b/assets/programming-language_php_laravel_blade_each.md.QuFh7yxU.js @@ -0,0 +1,4 @@ +import{_ as a,c as s,o as i,a2 as e}from"./chunks/framework.DjyxGeXd.js";const E=JSON.parse('{"title":"@each 渲染集合视图","description":"","frontmatter":{},"headers":[],"relativePath":"programming-language/php/laravel/blade/each.md","filePath":"programming-language/php/laravel/blade/each.md","lastUpdated":1677222754000}'),h={name:"programming-language/php/laravel/blade/each.md"},l=e(`更新频率为 每 4800 秒从 packagist.org 同步一次。
可以使用 Blade 的 @each
指令将循环和视图的包含组合到一行中:
@each('view.name', $users, 'user')
+
+// 提供一个当 users 为空时候的视图模版 view.empty
+@each('view.name', $users, 'user', 'view.empty')
@each
指令参数说明:
# 替换规则
+src="../../assets/([^"]*)"
+
+# 替换为
+src="{{ Vite::asset('resources/$1') }}"
Laravel Pint 支持开箱即用的代码风格检查和修复。
通过在项目根目录下添加 pint.json
来制定自定义的代码风格,更多自定义风格配置可以查看这里。
文件内容如下:
{
+ "preset": "laravel",
+ "rules": {
+ "ordered_imports": {
+ "sort_algorithm": "length",
+ "imports_order": [
+ "const",
+ "class",
+ "function"
+ ]
+ }
+ }
+}
ordered_imports
格式化 PHP 中类的 use
语句,排序的规则使用字符长度,导入顺序按照 const
、class
和 function
。
使用下面的命令可以安装指定版本的 Laravel 。
composer create-project laravel/laravel="8.6.*" YourAwesomeProjectName
// 重定向到指定uri
+redirect('/uri');
+redirect()->to('/uri');
+Redirect::to('/uri');
+
+// 重定向到路由
+redirect()->route('route.name');
+to_route('route.name');
+Redirect::route('route.name');
+
+// 重定向到上一步
+back();
+redirect()->back();
+redirect()->to(request()->header('referer'))
+Redirect::back();
PyExecJS
是一个Python库,用于在Python中执行JavaScript代码。
pip install PyExecJS
import execjs
+
+# 定义JavaScript代码
+js_code = """
+ function hello(name) {
+ return \`Hello ${name}!\`;
+ }
+ """
+
+# 编译JavaScript代码
+context = execjs.compile(js_code)
+
+# 调用JavaScript函数
+result = context.call('hello', 'Python')
+print(result) # 输出:Hello Python!