{"id":16872491,"url":"https://github.com/redgoose-dev/create-service-worker","last_synced_at":"2026-05-14T23:33:03.108Z","repository":{"id":159266628,"uuid":"634517642","full_name":"redgoose-dev/create-service-worker","owner":"redgoose-dev","description":"Create service worker","archived":false,"fork":false,"pushed_at":"2023-05-02T15:03:04.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-01T01:07:35.411Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redgoose-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-30T11:45:28.000Z","updated_at":"2023-04-30T14:15:03.000Z","dependencies_parsed_at":"2023-07-13T20:00:31.767Z","dependency_job_id":null,"html_url":"https://github.com/redgoose-dev/create-service-worker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/redgoose-dev/create-service-worker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redgoose-dev%2Fcreate-service-worker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redgoose-dev%2Fcreate-service-worker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redgoose-dev%2Fcreate-service-worker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redgoose-dev%2Fcreate-service-worker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redgoose-dev","download_url":"https://codeload.github.com/redgoose-dev/create-service-worker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redgoose-dev%2Fcreate-service-worker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33047679,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-10-13T15:15:05.399Z","updated_at":"2026-05-14T23:33:03.092Z","avatar_url":"https://github.com/redgoose-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# create-service-worker\n\n서비스워커 제작 툴입니다.  \n단순히 스크립트를 작성해서 사용해도 되겠지만 서비스에서 사용하는 캐시관리 때문에 별도의 스크립트를 작성하게 된것입니다.\n\n\n## 특징\n\n이 도구에서 다음과 같은 기능을 가지고 있습니다.\n\n### 캐시버전 관리\n\n빌드를 실행할때마다 timestamp 값을 추가하여 업데이트마다 새로운 캐시를 업데이트 하도록 도와줍니다.\n\n### 캐시등록\n\n캐시할 파일들 목록을 일일히 입력해줘야 하지만 번들링된 파일들을 자동으로 목록으로 만들 수 있습니다.\n\n\n## Usage\n\n일반적인 부분에서 사용방법은 다음과 같습니다.\n\n```javascript\nimport createServiceWorker from '@redgoose/create-service-worker'\n\nconst paths = await createServiceWorker({\n  target: 'dist',\n  output: '',\n  ignore: {\n    files: [\n      '.DS_Store',\n      'index.html',\n      'sw.js',\n    ],\n    children: {\n      images: { files: [ '.DS_Store' ] },\n    },\n  },\n})\n\nconsole.log(paths) // [ 'index.html' ]\n```\n\n### with vite\n\nvite 플러그인으로 사용하려면 다음과 같이 사용합니다. `build` 과정에서 사용되며, 빌드가 끝나면 실행됩니다.\n\n```javascript\nimport createServiceWorker from '@redgoose/create-service-worker/bundle/vite.plugin'\n\nconst config = defineConfig(({ mode }) =\u003e {\n  return {\n    plugins: [\n      createServiceWorker({\n        pathServiceWorker: 'dist/sw.js',\n        pathServiceWorkerTarget: 'dist/sw.js',\n        cacheName: 'app-cache',\n        splitKeyword: '// END OF RESOURCE //',\n        serviceWorker: {\n          target: 'dist',\n          output: '',\n          ignore: {\n            files: [\n              '.DS_Store',\n              'robots.txt',\n              'manifest.webmanifest',\n              'sw.js',\n            ],\n            children: {\n              images: { files: [ '.DS_Store' ] },\n            },\n          }\n        },\n      }),\n    ],\n  }\n})\n```\n\n\n## Options\n\n### basic\n\n- `target` {string}\n- `output` {string}\n- `ignore` {object}\n\n### vite\n\n- `pathServiceWorker` {string} 업데이트할 서비스워커 위치\n- `pathServiceWorkerTarget` {string} 서비스워커를 저장하는 위치\n- `cacheName` {string} // 캐시이름\n- `splitKeyword` {string} sw.js 소스중에 분리할 키워드 설정\n- `serviceWorker` {object} Options/basic 섹션의 값으로 사용됩니다.\n\n\n## write sw.js file\n\n간단하게 서비스워커 스크립트를 작성할 수 있습니다.  \n개발용으로 다음과 같이 작용하고, 빌드하면 스플릿 값 `// END OF RESOURCE //` 위의 값으로 교체합니다. (개발용과 빌드용을 구분하여 캐시이름과 리소스를 바꿔서 사용합니다.)\n\n```javascript\nconst CACHE_NAME = 'demo-cache-v1'\nconst CACHE_RESOURCE = [\n  '/favicon.ico',\n  '/index.html',\n]\n\n// END OF RESOURCE //\n\nself.addEventListener('fetch', event =\u003e {})\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredgoose-dev%2Fcreate-service-worker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredgoose-dev%2Fcreate-service-worker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredgoose-dev%2Fcreate-service-worker/lists"}