디렉토리의 내용을 패키징하고 모든 JavaScript 및 CSS 스크립트를 축소하는 파이썬 스크립트를 만들려고합니다.
아래 코드 (게시물 하단)를 사용했고 내부 디렉토리 구조 theme_files
는 다음과 같습니다.
\
|-assets\
| |-css\
| | |-theme.css
| | |-stylesheet.css
| |
| |-js\
| | |-theme.js
| | |-page.js
|
|-index.html
(더 나은 방법이 있습니까?)
전체 디렉토리 구조를 생성 된 .pak
파일로 올바르게 출력합니다 . 그러나 축소 된 css 및 javascript 파일에는 자체 파일 이름 이외의 내용이 없습니다.
예 : 파일의 내용 (최소화) theme.css
은 "theme.css"입니다.
그게 다야. 다른 것은 없습니다. 한 줄.
내가 뭘 잘못하고 있는지 아십니까?
import io
import os
import zipfile
import rcssmin
import rjsmin
pakName = input("Theme Name: ").replace(" ", "_").lower()
themePak = zipfile.ZipFile(pakName +".tpk", "w")
for dirname, subdirs, files in os.walk("theme_files"):
themePak.write(dirname)
for filename in files:
if not filename.endswith((".css", ".js")):
themePak.write(os.path.join(dirname, filename))
if filename.endswith(".css"):
cssMinified = io.StringIO()
cssMinified.write(rcssmin.cssmin(filename, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), cssMinified.getvalue())
if filename.endswith(".js"):
jsMinified = io.StringIO()
jsMinified.write(rjsmin.jsmin(filename, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), jsMinified.getvalue())
themePak.close()
@Squall이 언급했듯이
rcssmin.cssmin () 및 rjsmin.jsmin ()은 첫 번째 요소가 문자열로 축소 할 CSS 각각 JS 코드가 될 것으로 예상합니다. CSS 및 JS 파일을 직접 열고 읽어야합니다.
if filename.endswith(".css"):
with open(os.path.join(dirname, filename), "r") as assetfile:
assetdata = assetfile.read().replace("\n", "")
cssMinified = io.StringIO()
cssMinified.write(rcssmin.cssmin(assetdata, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), cssMinified.getvalue())
if filename.endswith(".js"):
with open(os.path.join(dirname, filename), "r") as assetfile:
assetdata = assetfile.read().replace("\n", "")
jsMinified = io.StringIO()
jsMinified.write(rjsmin.jsmin(assetdata, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), jsMinified.getvalue())
if
위 코드 에서 내 진술 의 변경 사항 은 자산 파일을 문자열로 연 다음 축소를 위해 전달합니다.
나는 당신이 os.path.join()
파일 이름과 디렉토리를 확인해야하는 어려운 방법을 배웠다 .
with open(os.path.join(dirname, filename), "r") as assetfile:
assetdata = assetfile.read().replace("\n", "")
그런 다음 축소 assetdata
하고 파일에 씁니다. (이 경우 메모리 개체입니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다