{"_id":"epub-validator","_rev":"64-ae01944c25937d923145a0aed3d2e7b3","name":"epub-validator","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"name":"epub-validator","version":"0.0.2","author":{"name":"Ridibooks Viewer Team","email":"viewer.team@ridi.com"},"license":"Apache-2.0","_id":"epub-validator@0.0.2","maintainers":[{"name":"ridibooks","email":"developer@ridi.com"}],"contributors":[{"name":"Davin Ahn","email":"davin.ahn@ridi.com"},{"name":"Daeyeol Ryu","email":"dy.ryu@ridi.com"}],"homepage":"https://github.com/ridibooks/ePub-Validator#readme","bugs":{"url":"https://github.com/ridibooks/ePub-Validator/issues"},"jxp":"epub-validator.jxp","dist":{"shasum":"39bb4cdacc00215a6a3ac6cf1e7c2e4f39167020","tarball":"https://registry.npmjs.org/epub-validator/-/epub-validator-0.0.2.tgz","integrity":"sha512-fT58fIlAc3Nl/OAxJ7LknWX6rX1ZO2SjnoG0ZR1zrp/hKNjQRpoUiRdNqrVp+9MM4z4N+R4KNPCJh6ej9/Lm4w==","signatures":[{"sig":"MEQCIGfBsVv1SwXNDChsxom5ahGqMh3baGdXqU2sM5PcjcStAiBavl3dYBZslHQsMAB5DDpm1GCei2FeFwysUphxVcyi1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"epub-validator.js","_from":".","files":["README.md","package.json","epub-validator.js","Makefile","MessageBundle_kr.properties","lib/*.js","config/*","db/*"],"_shasum":"39bb4cdacc00215a6a3ac6cf1e7c2e4f39167020","company":"© RIDI Corporation","engines":{"node":">=0.8.5"},"gitHead":"604f29163277e317337ffb01446ce6143369a15e","scripts":{},"_npmUser":{"name":"ridibooks","email":"developer@ridi.com"},"deprecated":"this package has been deprecated","repository":{"url":"git+https://github.com/ridibooks/ePub-Validator.git","type":"git"},"_npmVersion":"3.10.7","description":"ePub validator for Ridibooks CP site","directories":{},"_nodeVersion":"6.3.1","devDependencies":{"ms":"~0.7.0","css":"~2.1.0","jxm":"~0.3.6","debug":"~2.1.1","rimraf":"~2.2.8","wrench":"~1.5.8","xml2js":"~0.4.5","adm-zip":"~0.4.4","cheerio":"~0.18.0","is-utf8":"~0.2.0","sprintf":"~0.1.5","commander":"~2.6.0","node-uuid":"~1.4.2","sync-exec":"~0.5.0","validator":"~3.33.0","image-size":"~0.3.5","underscore":"~1.7.0","htmlparser2":"~3.8.2","string-hash":"~1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/epub-validator-0.0.2.tgz_1479097593781_0.20843373402021825","host":"packages-18-east.internal.npmjs.com"}},"0.0.4":{"name":"epub-validator","version":"0.0.4","author":{"name":"Ridibooks Viewer Team","email":"viewer.team@ridi.com"},"license":"MIT","_id":"epub-validator@0.0.4","maintainers":[{"name":"davin.ahn","email":"davin.ahn@ridi.com"},{"name":"devgrapher","email":"devgrapher@ridi.com"},{"name":"earus","email":"hc.kim@ridi.com"},{"name":"freekering","email":"freekering@gmail.com"},{"name":"kyungmi","email":"purecolor85@gmail.com"},{"name":"namenu","email":"namenu@gmail.com"},{"name":"ridicorp","email":"developer@ridi.com"}],"contributors":[{"name":"Davin Ahn","email":"davin.ahn@ridi.com"},{"name":"Daeyeol Ryu","email":"dy.ryu@ridi.com"}],"homepage":"https://github.com/ridi/ePub-Validator#readme","bugs":{"url":"https://github.com/ridi/ePub-Validator/issues"},"jxp":"epub-validator.jxp","dist":{"shasum":"f704df44300e23ce17da191871f307fb59827f43","tarball":"https://registry.npmjs.org/epub-validator/-/epub-validator-0.0.4.tgz","integrity":"sha512-mFHYUSJNsUzBlNHjdoHoe3W3GLlj9SOq86w8RqR3jVDrZwIIGRs8R6uy1XraYUFQiYWlwD7dIVpH//1E0SIWWg==","signatures":[{"sig":"MEQCIBpmWa17OV72II+u1tFnZ8mVsxJEdbxCHeQPXq3c3HmCAiB4OG5tJWK9GsNrFsAEbca5JNd9DDwHBklF8Yfr97FAqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"epub-validator.js","_from":".","files":["README.md","package.json","epub-validator.js","Makefile","MessageBundle_kr.properties","lib/*.js","config/*","db/*"],"_shasum":"f704df44300e23ce17da191871f307fb59827f43","company":"© RIDI Corporation","engines":{"node":">=6.11.4"},"gitHead":"5d5c1eb89150657983c4ff8aeb916a686e720633","scripts":{},"_npmUser":{"name":"freekering","email":"freekering@gmail.com"},"repository":{"url":"git+https://github.com/ridi/ePub-Validator.git","type":"git"},"_npmVersion":"4.2.0","description":"ePub validator for Ridibooks CP site","directories":{},"_nodeVersion":"7.10.1","devDependencies":{"ms":"~0.7.0","css":"~2.1.0","jxm":"~0.3.6","debug":"~2.1.1","rimraf":"~2.2.8","wrench":"~1.5.8","xml2js":"~0.4.5","adm-zip":"~0.4.4","cheerio":"~0.18.0","is-utf8":"~0.2.0","sprintf":"~0.1.5","commander":"~2.6.0","node-uuid":"~1.4.2","sync-exec":"~0.5.0","validator":"~3.33.0","image-size":"~0.3.5","underscore":"~1.7.0","htmlparser2":"~3.8.2","string-hash":"~1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/epub-validator-0.0.4.tgz_1512038247715_0.8378726951777935","host":"s3://npm-registry-packages"}}},"time":{"created":"2016-11-14T04:26:35.381Z","modified":"2026-07-01T06:20:32.196Z","0.0.2":"2016-11-14T04:26:35.381Z","0.0.3":"2017-11-30T10:18:25.207Z","0.0.4":"2017-11-30T10:37:28.337Z"},"bugs":{"url":"https://github.com/ridi/ePub-Validator/issues"},"author":{"name":"Ridibooks Viewer Team","email":"viewer.team@ridi.com"},"license":"MIT","homepage":"https://github.com/ridi/ePub-Validator#readme","repository":{"url":"git+https://github.com/ridi/ePub-Validator.git","type":"git"},"description":"ePub validator for Ridibooks CP site","contributors":[{"name":"Davin Ahn","email":"davin.ahn@ridi.com"},{"name":"Daeyeol Ryu","email":"dy.ryu@ridi.com"}],"maintainers":[{"email":"davin.ahn@ridi.com","name":"davin.ahn"},{"email":"developer@ridi.com","name":"ridicorp"},{"email":"junhee.han@ridi.com","name":"ridi-junhee"},{"email":"nsa06031@gmail.com","name":"mando212"},{"email":"hw.choi@ridi.com","name":"hw.choi"},{"email":"ys.yoon@ridi.com","name":"ys.yoon"}],"readme":"\n# ePub validator for Ridibooks CP site\n[![npm](https://img.shields.io/npm/v/epub-validator.svg)](https://www.npmjs.com/package/epub-validator)\n\n\n## 개발환경 설정\n\n### **Sublime Text 2, Package Control 활성화하기**\n1. `View > Show Console`\n2. 콘솔창에 아래 명령 복붙 후 실행.\n```\nimport urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')\n```\n3. Sublime Text 2 재시작.\n4. `cmd + shift + P`\n5. 입력창에 `install` 입력.\n6. `Package Control: Install Package` 선택(실행).\n\n### **Sublime Text 2, JS & NodeJS Snippets Package 설치하기**  \n1. 입력창에 `install` 입력.\n2. `Package Control: Install Package` 선택(실행).\n3. 입력창에 `nodejs` 입력.\n4. 'JavaScript & NodeJS Snippets' 선택(설치).\n\n### **Sublime Text 2, Javascript Completions Package 설치하기**\n1. 입력창에 `install` 입력.\n2. `Package Control: Install Package` 선택(실행).\n3. 입력창에 `javascript` 입력.\n4. `Javascript Completions` 선택(설치).\n\n### **Sublime Text 2에 NodeJS 빌드 시스템 추가하기**  \n1. `Tools > Build System > New Build System` 선택.\n2. 아래 내용 복붙.\n```\n{   \n    \"cmd\": [\"/usr/local/bin/node\", \"$file\"],\n    \"selector\": \"source.js\"\n}\n```\n3. 아래 경로로 저장.\n```\n/Users/{사용자 이름}/Library/Application\\ Support/Sublime\\ Text\\ 2/Packages/User/nodejs.sublime-build\n```  \n4. 빌드할 main.js를 Sublime Text 2로 열기 또는 선택.\n5. `Sublime Text 2 > Tools > Build System > nodejs` 선택.\n6. `cmd + B`\n\n\n## 디버깅 모드\n\n- 디버깅 모드는 프로그램의 흐름을 한눈에 파악하고 각 과정의 실행시간을 출력해주는 것을 의미한다.\n- 디버깅 모드로 실행시키기 위해서는 아래 처럼 커맨드를 사용할 때.\n```\n$ node epub-validator.js test.epub\n```\n- 커맨드 앞에 'DEBUG=**keyword**'를 붙여주면 된다.\n```\n$ DEBUG=* node epub-validator.js test.epub\n```\n- **keyword**에는 **app**, **epub**, **file**, **html**, **css**, **image**가 있으며 전체를 쓰고 싶을 때는 \\*를 사용한다.\n- 예를 들어 **app**을 keyword로 사용하면 아래와 같이 출력된다.\n```\napp init +0ms  \napp check args +2ms  \napp check exists file +1ms  \napp ePub validation +0ms  \napp ePub uncompressed +614ms  \napp files validation in ePub +0ms  \napp finish (0) +13ms  \n```\n\n\n## 배포 버전 생성\n- epub-validator 루트 디렉토리로 이동 후 다음 커맨드를 실행.\n```\n$ make release\n```\n> [jx-cli](https://github.com/jxcore/jxcore) 설치가 선행되어야 합니다.\n\n## 업데이트 이력\n\n### 0.0.3 (2017.11.30)\n- Repo 이동에 따른 패키지 정보 업데이트.\n- 디버그 버전 오류 수정.\n\n### 0.0.2 (2015.03.24)\n- 윈도우 환경에서 파일명에 공백이 포함된 ePub을 검사할 수 없었던 현상 수정.\n- 윈도우 환경에서 일괄로 유효성 검사를 진행할 수 있도록 'epub-validator.bat' 추가.\n- 결과 메시지를 좀 더 이해하기 쉽게 수정하고 의미 없는 메시지를 제거.\n- ignore_code_list가 정상 동작하지 않는 현상 수정.\n- html, body 태그는 자식 수 검사를하지 않도록 수정.\n- OPF에서 identifier, ISBN을 찾지 못할 때 검사가 중지되는 현상 수정.\n\n### 0.0.1 (2015.03.23)\n- 테스트 버전 배포.\n\n\n## 검사 항목(Ridi)\n| 분류 | 심각성 | 내용 | 개발현황 |\n|---|---|---|---|\n| EPUB-201~2 | 경고 | ISBN 유효성 검사 | 완료 |\n| EPUB-??? | ??? | ISBN 실존 검사 | 대기 |\n| EPUB-203 | 경고 | ID, 도서 제목, 저자, 출판 등 메타데이터 확인 | 완료 |\n| EPUB-301 | 오류 | 목차의 경로가 './'로 시작하는지 | 완료 |\n| EPUB-302 | 오류 | NCX 파일이 존재하는지 | 완료 |\n| EPUB-401 | 심각 | NCX 파일 인코딩이 UTF-8인지 | 완료 |\n| FILE-301 | 오류 | 파일명에 UTF-8, UTF-16 인코딩에서 지원하지 않는 문자를 포함하고 있는지 | 완료 |\n| IMG-301 | 오류 | 표지 이미지가 가이드라인 최대 크기보다 큰지 | 완료 |\n| IMG-302 | 오류 | 본문 이미지가 가이드라인 최대 크기보다 큰지 | 완료 |\n| IMG-303 | 오류 | 파일 크기가 가이드라인 최대 크기보다 큰지 | 완료 |\n| IMG-304 | 오류 | 이미지 Color model이 CMYK model인지 | 개발 중 |\n| HTML-201 | 경고 | OS 또는 App에서 지원하는 않는 태그를 사용하는지 | 완료 |\n| HTML-301 | 오류 | 파일 크기가 가이드라인 최대 크기보다 큰지 | 완료 |\n| HTML-302 | 오류 | 특정 태그가 너무 많은 자식 태그를 가지고 있는지 | 완료 |\n| HTML-303 | 오류 | body 태그에 'background-color' 스타일 속성이 들어가 있는지 | 완료 |\n| HTML-304 | 오류 | body 태그가 존재하는지 | 완료 |\n| HTML-??? | 경고 | App에서 부여한 스타일이 CP 스타일과 충돌하는게 있는지 | 개발 중 |\n| HTML-??? | 경고 | 풋노트 기능을 사용할 수 없는 링크 알려주기 | 대기 |\n| CSS-201 | 경고 | word-break 스타일 속성값을 break-all로 했을때 각줄의 끝이 균등 정렬되지 못 한다는것 알려주기 | 완료 |\n| CSS-202 | 경고 | OS 또는 App에서 지원하는 않는 속성을 사용하는지 | 완료 |\n| CSS-301 | 오류 | html 또는 body 태그의 너비 또는 높이를 조절하는 속성이 있는지 | 완료 |\n| CSS-302 | 오류 | 다단(Column) 스타일 속성을 사용하면 알려주기 | 완료 |\n| CSS-303 | 오류 | 이미지 태그 속성으로 'position:relative'를 주고 있는지 | 완료 |\n| CSS-??? | ??? | span 태그의 서체 크기가 일정 크기(약 26pt)를 넘지 않는지 | 개발 중 |\n| CSS-??? | ??? | url 속성으로 존재하지 않는 로컬 파일이나 외부 파일을 불러오려고 하는지 | 개발 중 |\n\n## 검사 항목(epubcheck)\n| 분류 | 심각성 | 내용 |\n|---|---|---|\n| ACC-004 | 경고 | 텍스트가 없어 터치할 수 없는 링크가 있는지 |\n| ACC-010 | 경고 | 제목(h1\\~6)에 blockquote, figure 태그가 포함되어 있는지 |\n| ACC-012 | 경고 | 표에 caption 태그가 누락되어 있는지 |\n| ACC-013 | 경고 | 인라인 스타일을 포함하고 있는지 |\n| ACC-014, 016 | 경고 | font-size 값이 상대값인지 |\n| ACC-015, 017 | 경고 | line-height 값이 상대값인지 |\n| CSS-001 | 경고 | ePub에서 사용할 수 없는 속성을 사용하는지 |\n| CSS-002 | 경고 | 속성값이 비어있는지 |\n| CSS-003~4 | 심각 | UTF-8, UTF-16 인코딩에서 지원하지 않는 문자를 포함하고 있는지 |\n| CSS-005 | 경고 | 충돌되서 덮어쓰기 되는 속성이 있는지 |\n| CSS-006 | 오류 | 'position:fixed' 속성을 사용하는지 |\n| CSS-007 | 경고 | 비표준 폰트를 사용하고 있는지 |\n| CSS-008 | 오류 | CSS 문법 오류 |\n| CSS-009 | 오류 | 페이징에 영향을 주는 속성을 사용하고 있는지 |\n| CSS-010 | 경고 | 비표준 스타일 시트를 사용하고 있는지 |\n| CSS-013 | 경고 | '!Important' 키워드를 사용하는 속성이 있는지 |\n| CSS-016 | 경고 | 대체 스타일시트가 기본 스타일 시트보다 우선시 되고 있는지 |\n| CSS-019 | 경고 | 속성이 없는 font-face가 있는지 |\n| CSS-020 | 경고 | 유효하지 않는 폰트 크기를 사용하고 있는지 |\n| CSS-022 | 경고 | html, body에 여백 속성을 추가 했는지 |\n","readmeFilename":"README.md"}