노드 외부에서 minifyJS를 사용하는 동안 발생한 문제를 해결합니다.js
4144 단어 html-minifier
묘사
의 간헐적 고장online tests은 주로minifyJS()
의 문자 통계 정보 리셋으로 인한 것이다.노드가 아닌 작업을 다시 수행합니다.인용the official version의 js버전을 통해
minifyCSS()
와 minifyURLs()
의 공공 논리를 추출했기 때문에 매번 호출할 때마다 모듈을 다시 불러오고 기본 옵션값을 채울 필요가 없습니다.토론 #1
@kangax@XhmikosR, 그래서 나는 원자력 추출UglifyJS.minify()
을 사용하여 직접 assets/uglify.js
에 구축하기로 결정했다.이렇게 되면 우리는 미래의 시련을 더욱 견뎌낼 수 있을 뿐만 아니라,simiplify
minifyJS()
도 얻게 될 것이다.지금까지 내가 볼 수 있는 유일한 단점은 npm run assets/uglify-js
이 서툴러 보인다는 것이다. 땀을 흘리는 미소: 토론 #2
나는 왜 우리가 사용자 정의 명령으로 그것을 생성해야 하는지 모르겠다.나는 차라리 우리가 정식을 유지하는 것이 낫다.토론 #셋
@XhmikosR 그래서 uglify-js
가 노드에서 실행될 때.js, 사용UglifyJS2/tools/node.js
그러나 웹을 위해 자신을 포장할 때, 이 파일은 노드를 사용하기 때문에 포함되지 않습니다.js 라이브러리.UglifyJS.minify
는 UglifyJS2/tools/node.js
에서 정의된 것이기 때문에 우리가 사용하는 논리적 경로는 노드와 관련이 없거나 필요하지 않습니다.js, 복사 htmlminifier.js
토론 #4
의 같은 논리가 아닌 직접 사용합니다.minifyJS
의 옛 코드는 UglifyJS.minify
의 초기 버전에서 만들어진 것일 수도 있습니다.그러나 지금은 그렇지 않을 것이다. 최소한 두 개의 버그 (문자 통계를 리셋하지 않고, 전달하지 않음 uglify-js
부터 options.compress
까지) 를 포함하고 있기 때문에, 우리가 중복 코드를 계속 업데이트하면 실제로는 더욱 취약하다.Compressor
의 공식 버전에 대해 우리는 여전히 그것을 사용하고 있다. 단지 파일 끝에 uglify-js
의 추가 정의를 추가했을 뿐이다. 이것도 공식 출처에서 추출한 것이다.UglifyJS.minify
중기-그러나 나는 @XhmikosR이 합병토론 #5
전에assets/uglify.js
에 추가 코드를 추가하도록 설득해야 한다고 생각한다. @XhmikosR는 현재 토론 #6
에 두 가지 다른 코드 경로가 있는데 각각minifyJS
버전과 Node.js버전으로 호출된다.온라인 코드 경로가 중단되었거나 첫날부터 시작되었거나 상위 항목의 API와 동기화되지 않았습니다.우리는 이 문제를 해결하기 위해 몇 가지 옵션이 있다.1. online에서 복제하여 온라인 코드 경로 복구
- 일관된 동작을 유지하기 위해 업스트림 변경 사항을 수동으로 추적해야 합니다.
2. 노드를 결합합니다.js와 온라인 버전을 후자로 변환
- 일관된 행동
- 업스트림 오류 수정 사항을 수동으로 추적해야 합니다.
- 노드를 검색하고 사용하기가 더 어렵습니다.js 사용자
3. (현재 PR) 두 버전을
uglify-js
로 결합- 공식 릴리즈
tools/node.js
에 require('uglify-js').minify
추가 필요- 일관된 행동
- 무미건조한 질문이 없습니다. 모든 코드는 Uglify JS2 저장소
tools/node.js
에서 나왔습니다. 저는 지금 uglify.js
와 토론 #7
와 같은 방법으로 다시 수정uglify.js
해서 만든 코드를 만들었습니다. @XhmikosR에 더 효과적입니까?출력 파일
browserify
을 호출하는 것이 의미가 있습니까?cleancss-browser.js
답장이 없어서 미안해요. 바빠요.개인적으로 나는 모든 것이 가능한 한 간단하기를 바란다.나는 당신의 해결 방안에 존재하는 문제점이 노드에 대해서도 사용자 정의 절차가 필요하다는 것을 보았습니다.필요 없어요.
어쨌든 @kangax가 뭘 좋아하든
relateurl-browser.js
@XhmikosR걱정 마세요--우리 모두 일상적인 업무가 있습니다:윙크:노드의 사용자 정의 단계당신이 가리키는 것은 무엇입니까?
uglify-browser.js
와토론 #8
요?토론 #9
이 모든 것을 통람한다.fromString
인터넷 소비에만 쓰입니까?노드 때문이냐고.js 사용자는 inline_script
의 규정에 따라 직접 사용토론 #10
.그렇다면 우리는 왜
dist/*
를 모두 제거하지 않고 src/*
package.json
assets/*
만 browserify
밑에 두었을까?src/htmlminifier.js
아니, dist/
사용토론 #11
아주 재미있는 이유가 있는데...cli.js
나는 이 LGTM이 매우 융합되었다고 생각한다.dist/htmlminifier.min.js
이전에 브라우저에서 일하지 않았습니까?토론 #12
@kangax 맞아요. -minifyJS
브라우저에서의 작업 방식은 노드와 다르다.js 이전에는 테스트 용례의 배정이 편리하게 문제를 숨겼습니다.현재 확장 중
토론 #13
폭탄Reference
이 문제에 관하여(노드 외부에서 minifyJS를 사용하는 동안 발생한 문제를 해결합니다.js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/kangax/html-minifier/issues/531텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)