공정 최적화 및 바벨 업그레이드 소기
소기의 배경
업무 코드가 증가함에 따라 프로젝트 코드의 컴파일 시간도 증가함에 따라 이 통증에 대해 dev에서 최적화를 하였다.
제1부분:dev 컴파일 시간 최적화
여기서 최적화의 주요 사고방식은 dev 환경에서 단독으로 dll 프로필을 만들어서 프로젝트의 일부분을 패키지에 의존하여 프로필에 기록하고 최종적으로 dev 환경에서 전용 dll 파일을 생성하는 것이다. 이렇게 처리하는 목적은 개발할 때의 컴파일 시간을 줄이는 것이다(ps: 테스트를 통해 50% 정도의 컴파일 효율을 높일 수 있다). 구체적으로 다음과 같이 수정한다.
// dll-dev.config.js
module.exports = {
entry: {
vendor: [
'moment',
'nprogress',
'cookie_js',
'echarts',
'jsbarcode',
'lodash',
'lodash-decorators',
'isomorphic-fetch',
'antd',
'react',
'react-dom',
'react-router',
'react-router-redux',
'redux',
'redux-fetch-elegant',
'redux-logger',
'redux-thunk'
...
]
}
}
"scripts": {
"dll-dev": "./node_modules/.bin/webpack --config dll-dev.config.js",
}
dev 환경에서 이 새로운 명령줄을 실행하여 dll 파일과 대응하는 json 맵 파일을 생성합니다. dev에서 일부 import에서 들어오는 패키지 파일의 컴파일을 줄이고 프로젝트의 전체 컴파일 시간을 줄일 수 있습니다.
npm run dll-dev
섹션 2: 엔지니어링 업그레이드babel@7+
패키지 업그레이드 & 군더더기 제거
and
'babel-preset-stage-2'가 삭제되었습니다. 개념이 모호하고 명확하지 않기 때문에 제안의 삭제나 변경으로 인해 예견할 수 없는 문제가 발생하는 것을 방지하기 위해babel@7+에서 단계 사전 설정을 삭제했습니다.
기타 의존 패키지v@6+업그레이드 대상v@7+채택babel@7+의 최신 공식 패키지 이름입니다.antd가 불러올 때 사용하는babel-plugin-import도babel에 따라 1.11.0으로 업그레이드해야 합니다. 설정 문법과 자원의 디렉터리 이름이 바뀌었기 때문입니다(babel.config.js 참조).
babel 프로필 수정
에서babel@7+에 새 구성 파일babel이 추가되었습니다.config.js, 이렇게 하면 프로필을 더욱 유연하게 할 수 있고babel이 사용하는monorepo 관리에 더욱 적합하다. 예를 들어 프로필을 모든 가방에 집중할 수도 있고 각 가방에 단독으로 프로필을 만들 수도 있다. 우리는 이 프로필을 사용한다. config에 판단 논리를 써서 dev와 프로필의 깊은 격리를 실현해야 하기 때문이다.
ps: 상세한 설정 공식 설명x vs 7.x
새 babel 구성 파일은 다음과 같습니다.
// babel.config.js
module.exports = function (api) {
api.cache(true)
const presets = [
'@babel/preset-env',
'@babel/react'
]
const plugins = [
['@babel/plugin-transform-runtime', {
'helpers': false,
'regenerator': true
}],
['@babel/plugin-proposal-class-properties', { 'loose': true }],
['import', {
'libraryName': 'antd',
'libraryDirectory': 'lib',
'style': 'css'
}, 'ant']
]
return {
presets,
plugins
}
}
컴파일 테스트 대비
동일한 컴퓨터 및 개발 환경을 사용하여 테스트 비교
프로모션 전에 컴파일하는 데 걸리는 시간은 다음과 같습니다.
업그레이드 후 컴파일을 수행하는 데 걸리는 시간은 다음과 같습니다.
업그레이드하기 전에 수정 사항을 저장하는 데 걸리는 시간은 다음과 같습니다.
업그레이드 후 수정 사항을 저장하는 데 걸리는 시간은 다음과 같습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qiita API v2를 Ajax에서 사용하기위한 webpack 설정 (로컬 개발 환경 전용)에서는 Qiita의 기사 목록, 사용자 세부 정보, 기사를 '좋아요'한 사람 목록 및 재고가 있는 사람 목록을 검색할 수 있습니다. Qiita 화면에서 기사를 재고한 사람을 볼 수 없기 때문에 API를 통해 기사를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.