노드 외부에서 minifyJS를 사용하는 동안 발생한 문제를 해결합니다.js

4144 단어 html-minifier

묘사

의 간헐적 고장online tests은 주로 minifyJS()의 문자 통계 정보 리셋으로 인한 것이다.
노드가 아닌 작업을 다시 수행합니다.인용the official version의 js버전을 통해 minifyCSS()minifyURLs()의 공공 논리를 추출했기 때문에 매번 호출할 때마다 모듈을 다시 불러오고 기본 옵션값을 채울 필요가 없습니다.

토론 #1

@kangax@XhmikosR, 그래서 나는 원자력 추출UglifyJS.minify()을 사용하여 직접 assets/uglify.js에 구축하기로 결정했다.
이렇게 되면 우리는 미래의 시련을 더욱 견뎌낼 수 있을 뿐만 아니라,simiplifyminifyJS()도 얻게 될 것이다.지금까지 내가 볼 수 있는 유일한 단점은 npm run assets/uglify-js이 서툴러 보인다는 것이다. 땀을 흘리는 미소:

토론 #2

나는 왜 우리가 사용자 정의 명령으로 그것을 생성해야 하는지 모르겠다.나는 차라리 우리가 정식을 유지하는 것이 낫다.

토론 #셋

@XhmikosR 그래서 uglify-js가 노드에서 실행될 때.js, 사용UglifyJS2/tools/node.js그러나 웹을 위해 자신을 포장할 때, 이 파일은 노드를 사용하기 때문에 포함되지 않습니다.js 라이브러리.UglifyJS.minifyUglifyJS2/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.jsonassets/*browserify 밑에 두었을까?src/htmlminifier.js 아니, dist/ 사용

토론 #11

아주 재미있는 이유가 있는데...cli.js 나는 이 LGTM이 매우 융합되었다고 생각한다.dist/htmlminifier.min.js 이전에 브라우저에서 일하지 않았습니까?

토론 #12

@kangax 맞아요. - minifyJS 브라우저에서의 작업 방식은 노드와 다르다.js 이전에는 테스트 용례의 배정이 편리하게 문제를 숨겼습니다.
현재 확장 중

토론 #13

폭탄

좋은 웹페이지 즐겨찾기