React 항목 이 포장 주 소 를 어떻게 수정 하 는 지 상세 하 게 설명 합 니 다(출력 파일 주 소 를 컴 파일 합 니 다)
최근 에 자신 이 만 든 이 내부 시스템 을 회사 의 통일 플랫폼 으로 옮 겼 을 때 작은 문제 가 발생 했 습 니 다.회사 에서 포장 을 요구 하 는 디 렉 터 리 이름 은 dist 이 어야 합 니 다.이 프로젝트 는 create-react-app 으로 만 들 었 기 때문에 포장 한 디 렉 터 리 는 기본 build 입 니 다.
그래서 포장 목록 을 어떻게 수정 하 는 지 에 대한 자 료 를 찾기 시작 했다.인터넷 에서 마음대로 검색 하면 다음 과 같은 해결 방안 이다.
eject 명령 을 사용 하여 설정 을 노출 시 킨 다음 포장 주 소 를 수정 합 니 다.
이 명령 을 사용 하면 거 스 를 수 없습니다.실행 하기 전에 코드 를 백업 하거나 버 전 라 이브 러 리 에 제출 하 십시오.
1.eject 명령 으로 설정 노출:
npm run eject
2.노출 된 프로필 config/path.js 를 수정 하고 app Build 를 출력 할 위치 로 변경 합 니 다.3.npm install 명령 을 사용 하여 설치 의존 을 한 다음 npm run build 패 키 지 를 실행 합 니 다.
이 방안 은 물론 아무런 문제 가 없습니다.이 를 통 해 create-react-app 는 React 프로젝트 를 만 들 때 많은 개발 자 들 이 지나치게 관심 을 가지 지 않 아 도 되 는 설정 항목 을 숨 기 고 전단 의 개발 을 최대한 간소화 했다 는 것 을 알 수 있 습 니 다.eject 명령 은 이 설정 항목 을 드 러 낼 수 있 습 니 다.
eject 의 폐단
주의해 야 할 것 은 eject 명령 은 거 스 를 수 없다 는 것 이다.이 명령 을 사용 하면 개발 디 렉 터 리 면 에 많은 프로필 과 스 크 립 트 를 받 아들 여야 합 니 다.
이것 은 가장 중요 한 것 이 아 닙 니 다.제 프로젝트 는 antd 를 UI 프레임 워 크 로 사 용 했 기 때문에 react-app-rewired 라 는 동쪽 을 사 용 했 기 때문에 저 는 eject 이후 npm run build 를 실행 하면 잘못 보고 할 수 있 습 니 다.
react-app-rewired 가 뭐 예요?
백 엔 드 개발 로 서 가장 큰 감명 을 받 은 것 은 전단 의 인터넷 자료 가 너무 적 다 는 것 이다.각종 구조,기술 업데이트 가 너무 빠 르 기 때문에 많은 블 로그 의 해결 방안 은 이미 시대 에 뒤떨어 졌 다 는 것 이다.당신들 이 본 나의 이 문장 은 아마도 곧 시대 에 뒤떨어 질 것 입 니 다.그러나 나 는 사고방식 을 모두 에 게 가 르 칠 것 입 니 다.말하자면,기술적 인 문제 에 부 딪 히 면 정말 해결 할 수 없 으 면 어떻게 합 니까?당연히 공식 문 서 를 찾 지.
react-app-rewired공식 문서를 통 해 이 도구 의 한 기능 이 ejb 가 아 닌 상태 에서 설정 파일 을 수정 하 는 것 임 을 알 수 있 습 니 다.앞에서 말 한 antd 도 설정 을 수정 하기 위해 도입 한 도구 입 니 다.기능 이 그렇다면 포장 주 소 를 수정 하 는 것 도 가능 할 것 이다.
react-app-rewired 를 사용 하여 ejb 없 이 포장 주 소 를 수정 합 니 다.
사고 방향 은 있 지만 전단 기반 이 약 한 백 스테이지 개발 에 있어 어떻게 실 체 를 해 야 할 지 모 르 겠 습 니 다.몇 편의 issue 를 본 후에Changing the default paths,Change build output path마침내 방법 을 찾 았 습 니 다.
우선 react-app-rewired 를 도입 해 야 합 니 다.여 기 는 방법 을 쓰 지 않 겠 습 니 다.여러분 은 공식 문 서 를 참고 하 세 요.유행 이 지나 지 않 습 니 다.
도입 후 config-over rides.js 파일 이 있 습 니 다.제 가 antd 를 도 입 했 기 때문에 내용 이 있 습 니 다.
// ant
const {injectBabelPlugin} = require('react-app-rewired');
module.exports = function override(config, env) {
// antd
config = injectBabelPlugin(['import', {libraryName: 'antd', libraryDirectory: 'es', style: 'css'}], config);
return config;
};
다음 코드 를 추가 합 니 다.
// ant
const {injectBabelPlugin} = require('react-app-rewired');
module.exports = function override(config, env) {
// antd
config = injectBabelPlugin(['import', {libraryName: 'antd', libraryDirectory: 'es', style: 'css'}], config);
+ // path
+ const path = require('path');
+ const paths = require('react-scripts/config/paths');
+ paths.appBuild = path.join(path.dirname(paths.appBuild), 'dist');
+ config.output.path = path.join(path.dirname(config.output.path), 'dist');
return config;
};
그러면 npm run build 를 다시 실행 하면 됩 니 다.문제 해결.만약 당신 이 이미 eject 작업 을 진행 했다 면,매우 유감스럽게도 버 전 라 이브 러 리 를 통 해 버 전 을 반환 할 수 밖 에 없습니다.
끝:설정 코드 분석
여기에 와 서 일부 학생 들 은 왜 상기 코드 가 문 제 를 해결 할 수 있 는 지 만족 하지 않 을 것 이다.문외한 으로서 나 는 나의 이해 에 따라 설명 할 것 이다.
const path = require('path');
이 줄 코드 는 require.js 를 기반 으로 가방 을 도입 하 는 도구 입 니 다.이 코드 를 통 해 path 를 가 져 와 야 경 로 를 처리 할 수 있 습 니 다.
const paths = require('react-scripts/config/paths');
React-scripts 에는 React 프로젝트 가 패키지 에 사용 되 는 명령 과 프로필 이 있 습 니 다.eject 를 진행 하면 config 와 script 디 렉 터 리 의 내용 이 React-scripts 의 동명 디 렉 터 리 와 놀 라 울 정도 로 비슷 합 니 다.eject 가 이곳 의 설정 을 드 러 냈 다 고 볼 수 있 습 니 다.이 코드 는 항목 의 경로 설정 을 가 져 오기 위 한 것 입 니 다.
paths.appBuild = path.join(path.dirname(paths.appBuild), 'dist');
이 줄 코드 는 설정 에 있 는 appBuild 디 렉 터 리 를 수정 하 는 것 입 니 다.React 프로젝트 는 build 를 진행 할 때 여기 설 정 된 디 렉 터 리 에 따라 작 동 합 니 다(예 를 들 어 포 장 된 코드 크기 검사,Gzip 계산 등).수정 해 야 합 니 다.그렇지 않 으 면 포장 에 실패 합 니 다.
config.output.path = path.join(path.dirname(config.output.path), 'dist');
이 코드 는 우리 의 목적 을 실현 하 는 근원 입 니 다.프로젝트 포장 주 소 를 수정 하 는 것 입 니 다.자,여기까지 본문 이 끝 났 습 니 다.여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바삭바삭하고 간단한 결제 페이지 만들기먼저 Next.js에서 프로젝트를 만듭니다. Vercel & Next.js가 매우 편하기 때문에 최근에는이 구성을 사용하고 있습니다. 그런 다음 Tailwind CSS를 넣습니다. Tailwind CSS를 사용하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.