코드 생성기와 작업 공간 자동화
컴포넌트, 페이지, 라이브러리를 일관되게 구성하는 사용자 정의 Nx 생성기를 작성합니다.
코드 생성기와 작업 공간 자동화은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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(파일과 작업 공간을 수정하는 로직)로 구성됩니다.
// 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
생성기 함수는 트리(파일 시스템 추상화)와 옵션을 받습니다. 파일을 읽고, 쓰고, 업데이트하려면 트리 API를 사용하세요.
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작업 공간 마이그레이션
Nx 버전을 업데이트하면 Nx가 자동 마이그레이션을 제공합니다. nx migrate latest를 실행한 다음 nx migrate --run-migrations를 실행하여 적용하세요.
npx nx migrate latest
# Review migrations.json
npx nx migrate --run-migrations상용구 자동화
팀에 특화된 패턴을 위한 사용자 지정 생성기를 만드세요. 예를 들면 표준 폴더 구조를 갖춘 기능 모듈, 생성·조회·수정·삭제 페이지, 사전 구성된 쿼리 훅이 포함된 데이터 액세스 라이브러리 등이 있습니다.
생성기 테스트
Nx는 생성기를 위한 테스트 도구를 제공합니다. 실제 파일 시스템을 건드리지 않고 파일 생성을 검증하려면 테스트에서 최소한의 트리를 만드세요.
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);
});빠른 확인
Nx 생성기에서 files/ 폴더의 용도는 무엇입니까?
복습
Nx 생성기는 nx generate를 통해 일관된 방식으로 파일의 뼈대를 만듭니다. schema.json(입력)과 index.ts(로직)를 사용하여 사용자 지정 생성기를 작성하세요. EJS 템플릿에는 files/ 폴더를 사용하세요. 안전한 메모리 내 파일 시스템에서 생성기를 테스트하려면 createTreeWithEmptyWorkspace를 사용하세요.
자주 묻는 질문
“코드 생성기와 작업 공간 자동화” 강의는 무료인가요?
네 — “코드 생성기와 작업 공간 자동화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“코드 생성기와 작업 공간 자동화”에서 뭘 배우나요?
컴포넌트, 페이지, 라이브러리를 일관되게 구성하는 사용자 정의 Nx 생성기를 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
React Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“코드 생성기와 작업 공간 자동화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- React 앱으로 Nx 모노레포 만들기
- 공유 라이브러리와 내부 패키지
- Nx 영향받은 명령과 캐싱
- 코드 생성기와 작업 공간 자동화