create-react-app webpack config และไฟล์อยู่ที่ไหน?


174

ฉันสร้างโครงการ ReactJS ด้วยcreate-react-appแพ็คเกจและใช้งานได้ดี แต่ฉันไม่สามารถค้นหาไฟล์และการกำหนดค่าของwebpack ได้

react-create-app ทำงานกับ webpack อย่างไร ไฟล์การกำหนดค่า webpack อยู่ที่ไหนในการติดตั้งเริ่มต้นด้วยcreate-react-app? ฉันไม่พบไฟล์การกำหนดค่าในโฟลเดอร์ของโครงการ

ฉันยังไม่ได้สร้างไฟล์ปรับแต่งแทนที่ ฉันสามารถจัดการการตั้งค่าคอนฟิเกอเรชันกับบทความอื่น ๆ แต่ฉันต้องการค้นหาไฟล์ปรับแต่งแบบธรรมดา

คำตอบ:


96

หากคุณต้องการค้นหาไฟล์ webpack และการกำหนดค่าให้ไปที่ไฟล์ package.json ของคุณแล้วค้นหาสคริปต์

img

คุณจะพบว่าวัตถุสคริปต์กำลังใช้ไลบรารีreact-สคริปต์

ตอนนี้ไปที่ node_modules และค้นหาโฟลเดอร์ react-สคริปต์react-script-in-node-modules

นี้ตอบสนองสคริปต์ / สคริปต์และตอบสนองสคริปต์ / configโฟลเดอร์ที่มีการกำหนดค่า webpack


1
ผมเห็น แต่ฉันยังไม่ได้ตอบสนองสคริปต์ dir
โมฮัมหมัด

4
ฉันเพิ่งสร้างแอปโดยใช้ create-react-app และในกรณีของฉันมีโฟลเดอร์ปฏิกิริยาสคริปต์ใน node_modules คุณสามารถแชร์แพ็คเกจ.jsonของคุณได้ไหม
Vikram Thakur

5
คำตอบนี้ไม่ถูกต้องอีกต่อไปขณะนี้ NPM แบนหมายความว่าโมดูลทั้งหมดอยู่ในnode_modulesไดเรกทอรีราก
vsync

4
การกำหนดค่า webpack ที่แท้จริงอยู่ที่นี่: github.com/facebook/create-react-app/blob/master/packages/…
protoEvangelion

กรณีการใช้งานที่พบบ่อยที่สุดคือการปรับแต่งการกำหนดค่า webpack ของโครงการ แต่ถ้ามันอยู่ใน node_modules มันจะถูกเขียนทับในทุก ๆ การติดตั้ง npm ใช่ไหม?
Blanc

59

จากเอกสาร :

คุณไม่จำเป็นต้องติดตั้งหรือกำหนดค่าเครื่องมือเช่น Webpack หรือ Babel พวกเขาถูกกำหนดค่าไว้ล่วงหน้าและซ่อนไว้เพื่อให้คุณสามารถมุ่งเน้นไปที่รหัส

หากคุณต้องการเข้าถึงไฟล์กำหนดค่าคุณต้องนำออกโดยเรียกใช้:

npm run eject

หมายเหตุ: นี่เป็นการดำเนินการทางเดียว เมื่อคุณนำออกคุณจะไม่สามารถย้อนกลับไป!

ในสถานการณ์ส่วนใหญ่เป็นการดีที่สุดที่จะไม่ดีดตัวออกมาและพยายามหาวิธีที่จะทำให้มันใช้ได้ผลในทางอื่น ด้วยวิธีนี้คุณสามารถอัปเดตการอ้างอิงของคุณผ่านcreate-react-appและไม่ต้องจัดการกับนรก Webpack


6
ฉันรู้ว่าสิ่งเหล่านี้ถูกซ่อนอยู่ แต่ฉันต้องการทราบว่าสิ่งเหล่านี้อยู่ที่ไหนและปฏิกิริยาตอบสนองการสร้างแอปจัดการความสามารถนี้ได้อย่างไร
Mohammad

จากนั้นคุณอาจจะต้องดูซอร์สโค้ด ฉันไม่แน่ใจ
klugjo

2
@ Mohammad ชำระเงินที่มาสำหรับ 'ปฏิกิริยาสคริปต์' คุณสามารถค้นหาการกำหนดค่าทั้งหมดที่มี
Jose Munoz

1
ไม่ตอบคำถาม แต่ช่วยฉันโดยไม่คำนึงว่า
Chicken Soup

33

ผู้คนมากมายมาที่หน้านี้โดยมีเป้าหมายในการค้นหาการกำหนดค่า webpack และไฟล์เพื่อเพิ่มการกำหนดค่าของพวกเขาเอง วิธีการที่จะบรรลุเป้าหมายนี้ได้โดยไม่ต้องใช้อีกnpm run ejectคือการใช้งานตอบสนองแอป-rewired สิ่งนี้ช่วยให้คุณเขียนทับไฟล์กำหนดค่า webpack ของคุณโดยไม่ต้องดีดแผ่นออก


6
มันยังคงเป็นทางออกที่ต้องการหรือไม่ มีคำเตือนเกี่ยวกับโครงการ rewired นี้คือ: github.com/timarney/react-app-rewired#rewire-your-app- : "ในขณะที่สร้างแอป React 2.0 ที่เป็น Repo นี้" เบา ๆ "ชุมชนส่วนใหญ่ได้รับการบำรุงรักษาที่จุดนี้ .. หมายเหตุ: ฉันใช้ next.js หรือ Razzle เป็นการส่วนตัวซึ่งทั้งสองสนับสนุน Webpack ที่กำหนดเองนอกกรอบ "
Anthony Kong

24

สมมติว่าคุณไม่ต้องการนำออกและคุณเพียงต้องการดูการกำหนดค่าที่คุณจะพบพวกเขา /node_modules/react-scripts/config

webpack.config.dev.js. //used by `npm start`
webpack.config.prod.js //used by `npm run build`


10

คุณสามารถค้นหาได้ในโฟลเดอร์/ config

เมื่อคุณเปิดถาดออกคุณจะได้รับข้อความเช่น:

 Adding /config/webpack.config.dev.js to the project
 Adding /config/webpack.config.prod.js to the project

7

การกำหนดค่า Webpack จะถูกจัดการโดยตอบสนองสคริปต์ คุณสามารถค้นหาทั้งหมด node_modules webpack การตั้งค่าภายในตอบสนองสคริปต์ / config

และหากคุณต้องการปรับแต่งการกำหนดค่า webpack คุณสามารถทำตามการปรับแต่งนี้- webpack-config


3

ลองนำไฟล์ config ออกโดยใช้:

npm run eject

จากนั้นคุณจะพบโฟลเดอร์ปรับแต่งที่สร้างขึ้นในโครงการของคุณ คุณจะพบไฟล์กำหนดค่า webpack ของคุณ


0

ฉันรู้ว่ามันค่อนข้างช้า แต่สำหรับคนในอนาคตที่สะดุดปัญหานี้หากคุณต้องการเข้าถึงการกำหนดค่า webpack ของ CRA ไม่มีวิธีอื่นนอกจากคุณต้องเรียกใช้:

$ npm run eject

อย่างไรก็ตามด้วยการดีดตัวออกคุณจะตัดตัวคุณเองออกจากขั้นตอนการอัพเดต CRA ดังนั้นจากจุดออกคุณจะต้องรักษาตัวเอง

ฉันเจอปัญหานี้หลายครั้งและดังนั้นฉันจึงสร้างเทมเพลตสำหรับแอปตอบโต้ที่มีการตั้งค่าส่วนใหญ่เหมือนกับ CRA แต่ยังมีสิทธิพิเศษเพิ่มเติม (เช่นองค์ประกอบที่มีสไตล์การทดสอบหน่วยตลก ๆ เทรวิส ci สำหรับการใช้งาน , ESLint, ฯลฯ ... ) เพื่อทำให้การบำรุงรักษาง่ายขึ้น ตรวจสอบrepo

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.