学生处网站建设工作总结苏州住房与城乡建设部网站

张小明 2026/1/9 14:07:05
学生处网站建设工作总结,苏州住房与城乡建设部网站,wordpress gitignore,android 移动网站开发很多人觉得Makefile是C/C的东西#xff0c;跟自己没关系。 其实Makefile就是一个任务自动化工具#xff0c;什么项目都能用。我现在Python、Go、前端项目都会写个Makefile#xff0c;把常用命令封装起来。 这篇讲讲Makefile的基本写法#xff0c;看完就能上手。 为什么用Ma…很多人觉得Makefile是C/C的东西跟自己没关系。其实Makefile就是一个任务自动化工具什么项目都能用。我现在Python、Go、前端项目都会写个Makefile把常用命令封装起来。这篇讲讲Makefile的基本写法看完就能上手。为什么用Makefile项目里常用的命令# 启动开发环境docker-composeup -dexport$(cat.env|xargs)python manage.py runserver# 跑测试pytest tests/ -v# 构建镜像dockerbuild -t myapp:v1.2.3.dockerpush myapp:v1.2.3# 部署sshservercd /app git pull systemctl restart myapp每次都敲一遍很烦而且新人来了不知道怎么跑。写个Makefile.PHONY: dev test build deploy dev: docker-compose up -d python manage.py runserver test: pytest tests/ -v build: docker build -t myapp:$(VERSION) . deploy: ssh server cd /app git pull systemctl restart myapp然后makedev# 启动开发环境maketest# 跑测试makebuildVERSIONv1.2.3# 构建镜像makedeploy# 部署新人来了先make help或者看Makefile就知道怎么跑项目。基本语法最简单的形式目标: 依赖 命令注意命令前面必须是Tab不是空格这是很多人踩的坑。hello: echo Hello, World!makehello# echo Hello, World!# Hello, World!依赖build: clean test echo 开始构建 clean: rm -rf dist/ test: pytest执行make build时会先执行clean和test。变量# 定义变量 APP_NAME myapp VERSION 1.0.0 # 使用变量 build: docker build -t $(APP_NAME):$(VERSION) .命令行传入变量makebuildVERSION2.0.0环境变量# 从环境变量获取有默认值 DB_HOST ? localhost DB_PORT ? 3306 run: DB_HOST$(DB_HOST) DB_PORT$(DB_PORT) python app.pymakerun# 使用默认值DB_HOSTprod.dbmakerun# 使用环境变量makerunDB_HOSTprod.db# 命令行传入伪目标如果目录里有个文件叫test执行make test会说已是最新。用.PHONY声明伪目标.PHONY: test clean build test: pytest所有不生成文件的目标都应该声明为.PHONY。静默执行默认make会打印执行的命令加可以隐藏hello: echo Hello或者全局静默make-s hello多行命令默认每行命令在单独的shell里执行上一行的变量下一行拿不到# 这样不行 test: cd /tmp pwd # 还是在原来的目录 # 这样可以 test: cd /tmp pwd # 或者用反斜杠 test: cd /tmp \ pwd \ ls错误处理默认命令失败就停止。加-可以忽略错误clean: -rm -rf dist/ # 即使失败也继续或者用 || trueclean: rm -rf dist/ || true实用模式帮助信息.PHONY: help help: echo 可用命令 echo make dev - 启动开发环境 echo make test - 运行测试 echo make build - 构建镜像 echo make deploy - 部署到服务器 # 把help放第一个make不带参数就显示帮助 .DEFAULT_GOAL : help更高级的写法自动从注释生成.PHONY: help help: ## 显示帮助信息 grep -E ^[a-zA-Z_-]:.*?## .*$$ $(MAKEFILE_LIST) | sort | awk BEGIN {FS :.*?## }; {printf \033[36m%-20s\033[0m %s\n, $$1, $$2} dev: ## 启动开发环境 docker-compose up -d test: ## 运行测试 pytest build: ## 构建镜像 docker build -t myapp .makehelp# dev 启动开发环境# test 运行测试# build 构建镜像include其他文件# 引入其他Makefile include config.mk # 如果文件不存在不报错 -include local.mk条件判断ifeq ($(ENV), prod) DB_HOST prod.db.com else DB_HOST localhost endif run: echo 连接 $(DB_HOST)获取Git信息GIT_COMMIT : $(shell git rev-parse --short HEAD) GIT_BRANCH : $(shell git rev-parse --abbrev-ref HEAD) BUILD_TIME : $(shell date %Y%m%d-%H%M%S) build: docker build \ --build-arg GIT_COMMIT$(GIT_COMMIT) \ --build-arg BUILD_TIME$(BUILD_TIME) \ -t myapp:$(GIT_COMMIT) .检查命令是否存在check-docker: which docker /dev/null || (echo 请先安装docker exit 1) build: check-docker docker build -t myapp .实际项目示例Go项目.PHONY: build test run clean help APP_NAME : myapp VERSION : $(shell git describe --tags --always --dirty) BUILD_TIME : $(shell date -u %Y-%m-%dT%H:%M:%SZ) LDFLAGS : -X main.Version$(VERSION) -X main.BuildTime$(BUILD_TIME) help: ## 帮助 grep -E ^[a-zA-Z_-]:.*?## .*$$ $(MAKEFILE_LIST) | awk BEGIN {FS :.*?## }; {printf \033[36m%-15s\033[0m %s\n, $$1, $$2} build: ## 构建 go build -ldflags $(LDFLAGS) -o bin/$(APP_NAME) . test: ## 测试 go test -v ./... run: build ## 运行 ./bin/$(APP_NAME) clean: ## 清理 rm -rf bin/ lint: ## 代码检查 golangci-lint run docker: ## 构建Docker镜像 docker build -t $(APP_NAME):$(VERSION) . .DEFAULT_GOAL : helpPython项目.PHONY: install dev test lint format clean help PYTHON : python3 VENV : .venv PIP : $(VENV)/bin/pip PYTEST : $(VENV)/bin/pytest help: echo make install - 安装依赖 echo make dev - 启动开发服务 echo make test - 运行测试 echo make lint - 代码检查 echo make format - 格式化代码 $(VENV): $(PYTHON) -m venv $(VENV) install: $(VENV) $(PIP) install -r requirements.txt dev: install $(VENV)/bin/python manage.py runserver test: install $(PYTEST) tests/ -v lint: $(VENV)/bin/flake8 src/ $(VENV)/bin/mypy src/ format: $(VENV)/bin/black src/ tests/ $(VENV)/bin/isort src/ tests/ clean: rm -rf $(VENV) __pycache__ .pytest_cache .mypy_cache find . -type d -name __pycache__ -exec rm -rf {} 前端项目.PHONY: install dev build test lint deploy help NODE_ENV ? development help: echo make install - 安装依赖 echo make dev - 启动开发服务 echo make build - 构建生产版本 echo make deploy - 部署 install: npm ci dev: npm run dev build: NODE_ENVproduction npm run build test: npm test lint: npm run lint deploy: build rsync -avz --delete dist/ server:/var/www/app/Docker项目.PHONY: up down logs ps build push clean help COMPOSE : docker-compose IMAGE : myapp REGISTRY : registry.example.com VERSION : $(shell git describe --tags --always) help: echo make up - 启动所有服务 echo make down - 停止所有服务 echo make logs - 查看日志 echo make build - 构建镜像 echo make push - 推送镜像 up: $(COMPOSE) up -d down: $(COMPOSE) down logs: $(COMPOSE) logs -f ps: $(COMPOSE) ps build: docker build -t $(REGISTRY)/$(IMAGE):$(VERSION) . docker tag $(REGISTRY)/$(IMAGE):$(VERSION) $(REGISTRY)/$(IMAGE):latest push: build docker push $(REGISTRY)/$(IMAGE):$(VERSION) docker push $(REGISTRY)/$(IMAGE):latest clean: $(COMPOSE) down -v --rmi local docker system prune -f常见问题Tab vs 空格命令前必须是Tab不是空格。如果你的编辑器把Tab转成空格了会报错Makefile:2: *** missing separator. Stop.VSCode可以在状态栏点击空格:4切换成Tab。变量展开# 立即展开 A : $(shell date) # 延迟展开 B $(shell date): 定义时就计算 使用时才计算。Windows兼容Windows上没有make命令可以用WSL安装MinGW的make用nmake语法略有不同或者干脆用跨平台的工具如just、task。Makefile不复杂核心就是目标、依赖、命令变量.PHONY写好一个Makefile整个团队都能统一操作方式还能当文档用。值得花半小时学一下。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

滨江建设交易门户网站有哪些做外贸免费的网站

在技术圈里,有一种非常普遍、却极具误导性的价值判断:“有新技术,才有价值。” “系统稳定,只是运维的本职工作。”但只要你在真实的生产环境里待得足够久,就会慢慢意识到一个反直觉的事实:“稳定”不是默认…

张小明 2026/1/7 22:09:52 网站建设

怎么自己搭建网站东莞企业网站建设制作

还在为复杂的文档导出功能头疼吗?🤔 想不想知道如何在浏览器中零依赖完成HTML到Word的完美转换?html-docx-js正是你梦寐以求的解决方案!这个轻量级工具让你的Web应用瞬间拥有专业级的文档导出能力。 【免费下载链接】html-docx-js…

张小明 2026/1/7 22:09:16 网站建设

平面设计网站推荐全面的移动网站建设

Swerve Web Server 详解 1. HTTP 头部信息 HTTP 头部信息可分为通用头部、请求头部和实体头部。通用头部适用于请求和响应,与消息本身相关;请求头部提供请求的额外信息;实体头部提供实体本身的信息。以下是一些常见头部的详细介绍: - 日期头部(Date Header) :提供消…

张小明 2026/1/7 22:08:43 网站建设

整站优化服务百度logo在线设计生成器

12 月 17 日至 19 日,2025 中国游戏产业年会在徐汇举行。这场中国游戏行业规格最高、影响最广的年度盛会,汇聚了诸多来自政府、学界、行业的权威人士,从游戏的文化价值、科技价值、社会价值等议题出发,共同探讨游戏的未来发展方向…

张小明 2026/1/7 22:08:10 网站建设

确定建设电子商务网站目的广州市专业做网站

概述 time-core 是 time-rs 项目的底层核心库,提供基础的时间算法和数据类型。这个配置文件体现了其作为"内部实现细节"的定位,设计上高度精简且专注于特定用途。 1. 包基本信息分析 包标识与定位 name "time-core" # 明…

张小明 2026/1/7 22:07:36 网站建设

礼服购物车网站模板黄冈app推广服务机构

如何用Dramatiq构建高性能Python分布式任务处理系统 【免费下载链接】dramatiq A fast and reliable background task processing library for Python 3. 项目地址: https://gitcode.com/gh_mirrors/dr/dramatiq Dramatiq是一款专为Python 3设计的高性能、可靠的分布式任…

张小明 2026/1/7 22:07:04 网站建设