0Pricing
React Academy · บทเรียน

ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน

เขียนตัวสร้าง Nx แบบกำหนดเองเพื่อสร้างโครงร่างคอมโพเนนต์ หน้า และไลบรารีอย่างสม่ำเสมอ

ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตัวสร้างของ Nx คืออะไร

ตัวสร้างของ Nx เป็นเครื่องมือสร้างโค้ด (เช่น เครื่องมือสร้างโครงร่าง) ที่สร้างโครงไฟล์ อัปเดตการตั้งค่า และรักษาความสอดคล้องกันทั่วทั้งโมโนเรโป คุณสามารถเรียกใช้ตัวสร้างที่มีมาให้หรือเขียนตัวสร้างของคุณเอง

การเรียกใช้ตัวสร้างที่มีมาให้

ใช้ nx generate พร้อมแพ็กเกจตัวสร้างและชื่อ เพิ่ม --dry-run เพื่อดูตัวอย่างการเปลี่ยนแปลงโดยไม่เขียนไฟล์

# Generate a React component in the ui library:
npx nx generate @nx/react:component Button --project=ui --dry-run

# Generate a hook:
npx nx generate @nx/react:hook useAuth --project=data-access

การสร้างตัวสร้างแบบกำหนดเอง

สร้างเทมเพลตตัวสร้างเปล่าภายในโครงการปลั๊กอินในเครื่อง

# Create a local plugin:
npx nx generate @nx/plugin:plugin my-plugin --directory=tools/my-plugin

# Add a generator to it:
npx nx generate @nx/plugin:generator feature-module --project=my-plugin

โครงสร้างของตัวสร้าง

ตัวสร้างประกอบด้วย schema.json ซึ่งเก็บอินพุต และ index.ts ซึ่งเก็บตรรกะสำหรับแก้ไขไฟล์และ workspace

// tools/my-plugin/src/generators/feature-module/schema.json
{
  "$schema": "...",
  "title": "Feature Module Generator",
  "properties": {
    "name": { "type": "string", "description": "Feature name" },
    "directory": { "type": "string", "default": "libs" }
  },
  "required": ["name"]
}

Index.ts ของตัวสร้าง

ฟังก์ชันตัวสร้างจะรับ tree ซึ่งเป็นส่วน抽象ของระบบไฟล์ และตัวเลือก ใช้ API ของ tree เพื่ออ่าน เขียน และอัปเดตไฟล์

import { Tree, formatFiles, generateFiles } from '@nx/devkit';
import * as path from 'path';

export default async function (tree: Tree, options: FeatureGeneratorSchema) {
  generateFiles(
    tree,
    path.join(__dirname, 'files'), // template folder
    `libs/${options.name}`,       // output path
    { ...options, tmpl: '' }       // template variables
  );
  await formatFiles(tree); // run prettier on generated files
}

ไฟล์เทมเพลต

วางไฟล์เทมเพลตไว้ในโฟลเดอร์ files/ ถัดจากตัวสร้าง ใช้ไวยากรณ์ EJS สำหรับเนื้อหาแบบไดนามิก

// tools/my-plugin/src/generators/feature-module/files/src/index.ts__tmpl__
export * from './lib/<%= name %>';

// files/src/lib/__name@dasherize__.ts__tmpl__
export function <%= name %>() {
  return '<%= name %> feature';
}

การอัปเดต project.json

ตัวสร้างสามารถแก้ไขไฟล์ที่มีอยู่ได้ ใช้ updateProjectConfiguration เพื่อเพิ่มเป้าหมายใหม่ให้กับโครงการ

import { updateProjectConfiguration, readProjectConfiguration } from '@nx/devkit';

const config = readProjectConfiguration(tree, options.project);
config.targets.storybook = {
  executor: '@storybook/nx:build-storybook',
  options: { outputDir: 'dist/storybook' },
};
updateProjectConfiguration(tree, options.project, config);

การเรียกใช้ตัวสร้างของคุณ

เรียกใช้ตัวสร้างแบบกำหนดเองได้เช่นเดียวกับตัวสร้างที่มีมาให้ โดยอ้างอิงปลั๊กอินในเครื่องของคุณ

npx nx generate my-plugin:feature-module my-feature --dry-run
npx nx generate my-plugin:feature-module my-feature

การย้ายข้อมูลของ workspace

Nx มีการย้ายข้อมูลอัตโนมัติเมื่อคุณอัปเดตเวอร์ชันของ Nx ให้เรียกใช้ nx migrate latest แล้วตามด้วย nx migrate --run-migrations เพื่อใช้การย้ายข้อมูล

npx nx migrate latest
# Review migrations.json
npx nx migrate --run-migrations

การทำโค้ดโครงร่างให้เป็นอัตโนมัติ

สร้างตัวสร้างแบบกำหนดเองสำหรับรูปแบบเฉพาะของทีม เช่น โมดูลฟีเจอร์ที่มีโครงสร้างโฟลเดอร์มาตรฐาน หน้าสำหรับ CRUD และไลบรารีเข้าถึงข้อมูลที่มีฮุกสำหรับการสืบค้นตั้งค่าไว้ล่วงหน้า เป็นต้น

การทดสอบตัวสร้าง

Nx มีชุดเครื่องมือทดสอบสำหรับตัวสร้าง สร้าง tree ขั้นต่ำในการทดสอบเพื่อตรวจสอบการสร้างไฟล์โดยไม่แตะต้องระบบไฟล์จริง

import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';

test('generates feature module', async () => {
  const tree = createTreeWithEmptyWorkspace();
  await generator(tree, { name: 'products' });
  expect(tree.exists('libs/products/src/index.ts')).toBe(true);
});

ตรวจสอบความเข้าใจ

โฟลเดอร์ files/ ในตัวสร้างของ Nx มีจุดประสงค์อะไร

ทบทวน

ตัวสร้างของ Nx สร้างโครงไฟล์อย่างสอดคล้องกันผ่าน nx generate เขียนตัวสร้างแบบกำหนดเองด้วย schema.json ซึ่งเก็บอินพุต และ index.ts ซึ่งเก็บตรรกะ ใช้โฟลเดอร์ files/ สำหรับเทมเพลต EJS ทดสอบตัวสร้างด้วย createTreeWithEmptyWorkspace เพื่อใช้ระบบไฟล์ในหน่วยความจำอย่างปลอดภัย

คำถามที่พบบ่อย

บทเรียน “ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน”

เขียนตัวสร้าง Nx แบบกำหนดเองเพื่อสร้างโครงร่างคอมโพเนนต์ หน้า และไลบรารีอย่างสม่ำเสมอ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้าง Nx Monorepo ด้วยแอป React
  2. ไลบรารีร่วมและแพ็กเกจภายใน
  3. คำสั่ง Nx Affected และการแคช
  4. ตัวสร้างโค้ดและการทำงานอัตโนมัติของพื้นที่ทำงาน
← กลับไปที่ React Academy