{"id":13755210,"url":"https://github.com/tencentyun/wecos","last_synced_at":"2025-04-07T05:14:09.421Z","repository":{"id":57209618,"uuid":"77925528","full_name":"tencentyun/wecos","owner":"tencentyun","description":"WeCOS——微信小程序 COS 瘦身解决方案","archived":false,"fork":false,"pushed_at":"2022-11-14T09:39:02.000Z","size":64,"stargazers_count":198,"open_issues_count":3,"forks_count":33,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-03-30T21:08:52.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tencentyun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-03T14:44:23.000Z","updated_at":"2024-11-18T23:44:33.000Z","dependencies_parsed_at":"2022-09-08T17:30:37.480Z","dependency_job_id":null,"html_url":"https://github.com/tencentyun/wecos","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tencentyun%2Fwecos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tencentyun%2Fwecos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tencentyun%2Fwecos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tencentyun%2Fwecos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tencentyun","download_url":"https://codeload.github.com/tencentyun/wecos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595335,"owners_count":20963943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T10:00:48.871Z","updated_at":"2025-04-07T05:14:09.398Z","avatar_url":"https://github.com/tencentyun.png","language":"JavaScript","funding_links":[],"categories":["开发工具"],"sub_categories":[],"readme":"# WeCOS —— 微信小程序 COS 瘦身解决方案\n\n通过WeCOS，你的小程序项目中的图片资源会自动上传到你的[腾讯云对象存储服务（COS）](https://www.qcloud.com/product/cos)，且WeCOS自动替换代码中图片资源地址的引用为线上地址，移除项目目录中的图片资源，从而减小小程序包大小，为你解决包大小超过限制的烦恼。 \n![WeCOS](https://pic1.zhimg.com/v2-cc9a13ee4c09935127181a66ebe4a3e8_b.jpg)\n\u003cbr/\u003e\n\n## 为什么你需要 WeCOS\n\n    为了提升小程序体验流畅度，编译后的代码包大小需小于 1MB ，大于 1MB 的代码包将上传失败。\n\n在开发小程序的过程中，图片资源通常会占用较大空间，很容易超出官方的1MB限制。这时候，使用WeCOS，可以让你在开发过程中不需要关心图片资源占用多少空间的问题，专注于自己的逻辑开发。\n\u003cbr/\u003e\n\n## 准备工作\n* 进入[腾讯云官网](https://www.qcloud.com)，注册帐号\n* 登录[云对象存储服务（COS）控制台](https://console.qcloud.com/cos4)，开通COS服务，创建Bucket\n* 安装[Node.js](https://nodejs.org)环境\n\u003cbr/\u003e\n\n## 安装\n\n```js\nnpm install -g wecos\n```\n\u003cbr/\u003e\n\n## 基本配置\n在你的小程序目录同级下创建`wecos.config.json`文件\n\n`wecos.config.json`配置项例子：\n```json\n{\n  \"appDir\": \"./app\",\n  \"cos\": {\n    \"secret_id\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n    \"secret_key\": \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    \"bucket\": \"wxapp-1251902136\",\n    \"region\": \"ap-guangzhou\", //创建bucket时选择的地域简称\n    \"folder\": \"/\", //资源存放在bucket的哪个目录下\n  }\n}\n```\n\n| 配置项 | 类型 | 说明 |\n|:-- |:-- |:-- |\n| appDir | **[String]** | 默认 `./app`，小程序项目目录 |\n| cos | **[Object]** | 必填，填写需要上传到COS对应的配置信息，部分信息可在[COS控制台](https://console.qcloud.com/cos4/secret)查看 |\n\u003cbr/\u003e\n\n## 使用\n\n在配置文件同级目录下命令行执行 \n```js \nwecos\n```\n注意，执行前需要在该目录下创建`wecos.config.json`文件\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 高级配置\n\n| 配置项 | 类型 | 说明 |\n|:-- |:-- |:-- |\n| backupDir | **[String]** | 默认 `./wecos_backup`，备份目录 |\n| uploadFileSuffix | **[Array]** | 默认 `[\".jpg\", \".png\", \".gif\"]`，图片上传后缀名配置 |\n| uploadFileBlackList | **[Array]** | 默认 `[]`，图片资源黑名单 |\n| replaceHost | **[String]** | 默认 `''`，把指定域名替换成 targetHost |\n| targetHost | **[String]** | 默认 `''`，使用自定义域名 |\n| compress | **[Boolean]** | 默认 `false`，是否开启压缩图片 |\n| watch | **[Boolean]** | 默认 `true`，是否开启实时监听项目目录 |\n\n#### 设置备份目录\n\n由于WeCOS在运行时会自动将项目下的图片上传至COS然后删除，这样可能存在丢失源文件的风险，因此我们也提供了备份源文件的功能，每上传一张图片，会在项目同级的某个目录下备份该文件\n\n为了方便使用，可以通过以下配置来修改备份目录名，如果不需要使用该功能，可以设置为空值\n```json\n  \"backupDir\": \"./wecos_backup\"\n```\n\u003cbr/\u003e\n\n#### 设置图片后缀\n\n有些时候，我们需要限制上传图片的格式，例如只允许`jpg`格式，可以通过WeCOS提供的图片后缀配置项来定义\n\nWeCOS默认支持`jpg,png,gif`三种格式，假如你还需要添加其他格式，例如webp，可以在该配置项中添加\n\n```json\n  \"uploadFileSuffix\": [\".jpg\",\".png\",\".gif\",\".webp\"]\n```\n\u003cbr/\u003e\n\n#### 设置图片黑名单\n\n开发过程中，某些特定的图片我们不希望被上传，可以通过WeCOS的黑名单配置来解决这个问题，配置后上传程序会自动忽略掉这些图片\n\n黑名单配置支持目录或具体到文件名的写法\n```json\n  \"uploadFileBlackList\": [\"./images/logo.png\",\"./logo/\"]\n```\n\u003cbr/\u003e\n\n#### 自定义域名\n\n如果希望 COS 文件链接使用自定义的域名，可以配置 targetHost 代替默认域名，可以省略：`http://`：\n\n```json\n  \"targetHost\": \"http://example.com\"\n```\n\n如果代码中的图片链接想换一个域名，可以配置 replaceHost targetHost 来实现。\n\n```json\n  \"replaceHost\": \"http://wx-12345678.myqcloud.com\",\n  \"targetHost\": \"https://example.com\"\n```\n\u003cbr/\u003e\n\n#### 开启图片压缩\n\n图片上传到COS之后虽然大大减轻了程序包的大小，但如果图片自身体积过大，访问速度也会影响到用户体验\n\n令人激动的是，WeCOS在图片上云的基础功能上还额外提供了基于[腾讯云万象优图](https://www.qcloud.com/product/ci)的图片压缩功能。\n\n首先，你需要在[万象优图控制台](https://console.qcloud.com/ci)创建 COS的同名bucket\n\n然后，开启该选项，资源将被压缩后上传（注：如果图片已经小到一定程度，压缩后大小可能不会变化）\n\n```json\n  \"compress\": true\n```\n\u003cbr/\u003e\n\n#### 设置实时监听\n\nWeCOS默认实时监听项目目录变化，自动处理图片资源，在开发过程中，如果觉得实时监听不方便，或者只需要一次性处理就停止，可以修改该配置，程序将只会执行一次后退出\n```json\n  \"watch\": false\n```\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 高级用法\n如果你除了上述使用命令行来执行的方式外，还想使用其他的方式，例如定制化成自己的模块，我们也提供了直接引用的使用方法满足你个性化的需求\n\n```js\nvar wecos = require('wecos');\n\n/**\n* option 可选 [String|Object]\n* 传入 String，指定配置文件路径\n* 传入 Object，指定配置项\n*/\nwecos([option]);\n\n//指定配置文件路径\nwecos('./wecos-config.js');\n\n//指定配置项\nwecos({\n\tappDir: './xxx',\n\tcos: {\n\t\t...\n\t}\n});\n\n```\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 相关\n\n* [WeCOS-UGC-DEMO](https://github.com/tencentyun/wecos-ugc-upload-demo)——小程序用户资源上传COS DEMO\n\n* [COS-AUTH](https://github.com/tencentyun/cos-auth)——COS鉴权服务器DEMO\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftencentyun%2Fwecos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftencentyun%2Fwecos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftencentyun%2Fwecos/lists"}