ESBuild 열 시트¶
ESBuild - 극적으로 빠른 자바 스크립트 번들
ESBuild는 매우 빠른 JavaScript 번들러 및 마이터입니다. 웹에 배포하기위한 JavaScript 및 TypeScript 코드를 포장하고 다른 번들보다 10-100x를 더 빠르게 만드는 Go에서 작성됩니다.
본문 바로가기¶
- 설치
- 기본 사용
- 본선 인터페이스
- JavaScript API
- 구성
- 입장 포인트
- 입력
- 로드
- 펄진
- 외부 의존
- 코드 분할
- 트리 쉐이킹
- 출처지도
- 워치 모드
- 개발 서버
- TypeScript 지원
- JSX 및 React
- CSS 및 자산
- Optimization
- 플랫폼 대상
- 고급 기능
- 공연
- 모범 사례
설치하기¶
글로벌 설치¶
카지노사이트
로컬 설치 (추천)¶
카지노사이트
Package.json 스크립트¶
카지노사이트
기본 사용¶
간단한 빌드¶
카지노사이트
다수 입장 점¶
카지노사이트
TypeScript 지원¶
카지노사이트
명령 선 공용영역¶
옵션 만들기¶
카지노사이트
형식 옵션¶
카지노사이트
대상 옵션¶
카지노사이트
외부 Dependencies¶
카지노사이트
Loader 옵션¶
ο 회원 관리
· 사이트맵¶
기본 빌드 API¶
카지노사이트
고급 빌드 구성¶
카지노사이트
다수 구조¶
카지노사이트
제품 설명¶
구성 파일¶
카지노사이트
환경 별 제품 설명¶
카지노사이트
입력 점수¶
단 하나 입장 점¶
카지노사이트
다수 입장 점¶
카지노사이트
이름 입력 점수¶
카지노사이트
동적 입력점¶
오프화이트
출력 전압¶
출력 파일¶
카지노사이트
출력 디렉토리¶
오프화이트
공공 경로¶
카지노사이트
메모리에 쓰기¶
카지노사이트
로더¶
내장 Loaders¶
카지노사이트
파일 Loader¶
카지노사이트
데이터 URL 로더¶
카지노사이트
텍스트 로더¶
카지노사이트
Base64 로더¶
```javascript // Imports files as base64 strings esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', loader: { '.woff': 'base64', '.woff2': 'base64' } });
// Usage in code import fontData from './font.woff2'; // Base64 encoded string ```의 경우
플러그인¶
플러그인 시스템¶
```javascript // Simple plugin const examplePlugin = { name: 'example', setup(build) { build.onResolve({ filter: /^example:/ }, args => { return { path: args.path, namespace: 'example' }; });
build.onLoad({ filter: /.*/, namespace: 'example' }, args => {
return {
contents: 'export default "This is from the example plugin"',
loader: 'js'
};
});
} };
esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', plugins: [examplePlugin] }); ```에 대하여
파일 시스템 플러그인¶
```javascript const fs = require('fs'); const path = require('path');
const fileSystemPlugin = { name: 'file-system', setup(build) { build.onResolve({ filter: /^fs:/ }, args => { return { path: path.resolve(args.resolveDir, args.path.slice(3)), namespace: 'file-system' }; });
build.onLoad({ filter: /.*/, namespace: 'file-system' }, args => {
const contents = fs.readFileSync(args.path, 'utf8');
return {
contents: `export default ${JSON.stringify(contents)}`,
loader: 'js'
};
});
} };
// Usage: import content from 'fs:./data.txt'; ```의 경우
HTTP 플러그인¶
```javascript const https = require('https');
const httpPlugin = { name: 'http', setup(build) { build.onResolve({ filter: /^https?:\/\// }, args => { return { path: args.path, namespace: 'http-url' }; });
build.onLoad({ filter: /.*/, namespace: 'http-url' }, args => {
return new Promise((resolve, reject) => {
https.get(args.path, res => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => resolve({
contents: data,
loader: 'js'
}));
}).on('error', reject);
});
});
} };
// Usage: import module from 'https://cdn.skypack.dev/lodash'; ```에 대하여
환경 변수 다운로드¶
```javascript const envPlugin = { name: 'env', setup(build) { build.onResolve({ filter: /^env$/ }, args => { return { path: args.path, namespace: 'env' }; });
build.onLoad({ filter: /.*/, namespace: 'env' }, args => {
return {
contents: `export default ${JSON.stringify(process.env)}`,
loader: 'js'
};
});
} };
// Usage: import env from 'env'; ```의 경우
외부 Dependencies¶
기본 외부¶
카지노사이트
외부 패턴¶
카지노사이트
상태 외부¶
카지노사이트
코드 분할¶
자동 코드 분할¶
카지노사이트
동적 수입¶
카지노사이트
수동 Chunks¶
카지노사이트
트리 쉐이킹¶
자동 트리 쉐이킹¶
javascript
// ESBuild automatically tree-shakes ES modules
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
format: 'esm' // Required for tree shaking
});의 경우
부작용¶
```javascript // package.json { "sideEffects": false // Enable aggressive tree shaking }
// Or specify files with side effects { "sideEffects": [ "*.css", "./src/polyfills.js" ] } ```의 경우
트리 쉐이킹 예제¶
카지노사이트
소스 맵¶
소스 맵 옵션¶
```javascript esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', sourcemap: true // External source map });
esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', sourcemap: 'inline' // Inline source map });
esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', sourcemap: 'external' // External source map (same as true) });
esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', sourcemap: 'both' // Both inline and external }); ```의 경우
소스 맵 구성¶
javascript
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
sourcemap: true,
sourceRoot: '/src', // Source root in source map
sourcesContent: false // Don't include source content
});를 호출합니다.
시계 형태¶
Basic Watch 모드¶
javascript
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
watch: true
});의 경우
Callbacks로 보기¶
javascript
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
watch: {
onRebuild(error, result) {
if (error) {
console.error('Watch build failed:', error);
} else {
console.log('Watch build succeeded:', result);
}
}
}
});로
고급 시계 구성¶
카지노사이트
개발 서버¶
Basic 개발 서버¶
오프화이트
개발 서버 API¶
카지노사이트
실시간 Reload 설정¶
__CODE_BLOCK_49_로그
TypeScript 지원¶
기본 TypeScript¶
카지노사이트
TypeScript와 Type Checking¶
```javascript // ESBuild doesn't type-check, use tsc for that const { execSync } = require('child_process');
// Type check first try { execSync('tsc --noEmit', { stdio: 'inherit' }); } catch (error) { process.exit(1); }
// Then build esbuild.build({ entryPoints: ['src/index.ts'], bundle: true, outfile: 'dist/bundle.js' }); ```를 호출합니다.
TypeScript 구성¶
javascript
esbuild.build({
entryPoints: ['src/index.ts'],
bundle: true,
outfile: 'dist/bundle.js',
target: 'es2020',
loader: {
'.ts': 'ts',
'.tsx': 'tsx'
}
});의 경우
유형Script 오시는 길¶
카지노사이트
JSX 및 반응¶
반응 JSX¶
카지노사이트
주문 JSX¶
javascript
esbuild.build({
entryPoints: ['src/index.jsx'],
bundle: true,
outfile: 'dist/bundle.js',
jsx: 'transform',
jsxFactory: 'h', // Preact
jsxFragment: 'Fragment'
});로
사이트맵 회사연혁¶
카지노사이트
TypeScript + 반응¶
카지노사이트
CSS 및 자산¶
사이트맵 한국어¶
카지노사이트
사이트맵 모듈 ( 플러그인 포함)¶
```javascript const cssModulesPlugin = { name: 'css-modules', setup(build) { build.onLoad({ filter: /.module.css$/ }, async (args) => { // Implement CSS modules logic const css = await fs.promises.readFile(args.path, 'utf8'); // Process CSS modules... return { contents: css, loader: 'css' }; }); } };
esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', plugins: [cssModulesPlugin] }); ```에
자산 처리¶
javascript
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outdir: 'dist',
loader: {
'.png': 'file',
'.jpg': 'file',
'.gif': 'file',
'.svg': 'file',
'.woff': 'file',
'.woff2': 'file'
},
assetNames: 'assets/[name]-[hash]'
});의 경우
사업영역¶
이름 *¶
카지노사이트
죽은 코드 제거¶
카지노사이트
일정 정의¶
javascript
esbuild.build({
entryPoints: ['src/index.js'],
bundle: true,
outfile: 'dist/bundle.js',
define: {
'process.env.NODE_ENV': '"production"',
'DEBUG': 'false',
'VERSION': '"1.0.0"'
}
});의 경우
드롭 콘솔¶
카지노사이트
플랫폼 대상¶
비밀번호¶
카지노사이트
Node.js 대상¶
카지노사이트
중립 플랫폼¶
카지노사이트
고급 기능¶
배너 및 Footer¶
카지노사이트
Inject 부호¶
카지노사이트
Metafile 생성¶
```javascript const result = await esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js', metafile: true });
// Analyze bundle console.log(await esbuild.analyzeMetafile(result.metafile));
// Save metafile require('fs').writeFileSync('meta.json', JSON.stringify(result.metafile)); ```의 경우
* 이름¶
카지노사이트
- 연혁¶
회사연혁¶
```javascript // Measure build time const start = Date.now();
await esbuild.build({ entryPoints: ['src/index.js'], bundle: true, outfile: 'dist/bundle.js' });
console.log(Build took ${Date.now() - start}ms);
```의 경우
Incremental 빌드¶
카지노사이트
평행한 구조¶
```javascript const builds = [ esbuild.build({ entryPoints: ['src/client.js'], bundle: true, outfile: 'dist/client.js', platform: 'browser' }), esbuild.build({ entryPoints: ['src/server.js'], bundle: true, outfile: 'dist/server.js', platform: 'node' }) ];
await Promise.all(builds); ```로
최고의 연습¶
프로젝트 구조¶
카지노사이트
구성 모범 사례¶
카지노사이트
성능 최적화¶
- ** 외부 의존성 사용 ** 중복이 필요없는 라이브러리에 대한
- ** ES 모듈을 사용하여 트리 쉐이킹 **
- ** 큰 응용 프로그램에 대한 코드 분할 **
- ** 소형 뭉치 크기 ** 적당한 장전기로
- ** 캐시 빌드 ** incremental 컴파일
개발 Workflow¶
- ** 개발용 시계 모드**
- 소스 맵 디버깅
- ** 더 나은 DX를 위해 라이브 재로드 ** 설정
- **Type check 별도 ** TypeScript 프로젝트
- **개발 서버 ** 로컬 테스트
생산 Deployment¶
- ** 작은 번들을 위한 코드**
- Drop 콘솔 문
- **Generate metafiles ** 번들 분석
- 응용 콘텐츠 해싱 for caching
- **테스트 빌드 ** 배포하기 전에
제품정보¶
ESBuild는 최소한의 구성으로 우수한 성능을 제공하는 매우 빠른 JavaScript 번들러입니다. 주요 특징은 다음을 포함합니다:
- ** 빠른 속도**: 다른 뭉치 보다는 10-100x 더 빠른
- Zero 구성: 대부분의 프로젝트에 대한 상자에서 작동합니다.
- TypeScript 지원: 내장 TypeScript 컴파일
- **Tree Shaking **: 자동 죽은 코드 제거
- ** 코드 분할 **: 동적 수입 및 분할 지원
- ** 다중 형식 ** : ES 모듈, CommonJS, IIFE 및 더 많은
- Plugin System: 사용자 정의 플러그인으로 확장 가능
- Development Server: 실시간 재로드를 가진 내장 개발 서버
ESBuild의 속도와 단순성을 활용하여 현대 웹 개발에 필요한 모든 기능을 유지하면서 빌드 시간을 크게 향상시킬 수 있습니다.
<문서> 기능 copyToClipboard () 이름 * const 명령어 = document.querySelectorAll('code'); let allCommands = ''; 명령. forEach(cmd =>의 경우 모든Commands +=cmd.textContent + navigator.clipboard.write텍스(allCommands); alert('모든 명령은 클립보드에 복사!'); 이름 *
함수 생성PDF() { 창. 인쇄 (); 이름 *