Builder
Copyright 2001~present. mornya. All rights reserved.
This project has been created by Vessel CLI. For a simple and quick reference about it, click here.
About
Webpack (v5) 기반 애플리케이션 빌드/분석을 위한 구성이 제공되는 패키지.
Features
- TypeScript and ES6+ is supported by default (no Babel use).
- Webpack v5 based compilation with HMR and various plugins
- Quick developments for WebpackDevServer v4 based
- Lint and test all of your codes with Lintest CLI.
Installation
해당 라이브러리를 사용 할 프로젝트에서는 아래와 같이 의존성 모듈로 설치한다.
$ npm install --save @mornya/builder
or
$ yarn add @mornya/builder
Usage
웹팩을 이용한 빌드
를 위해 아래와 같은 예시를 참고한다.
import path from 'path';
import { WebpackCompiler } from '@mornya/builder';
const compilerConfig: WebpackCompiler.CompilerConfig = {
buildEnv: 'development', // or 'production' (default)
// webpack info 표시여부 (dev-server 기동시에는 경고/오류 외에는 출력하지 않음)
isShowBuildInfo: false, // or true
};
// 생성된 앱에서의 경로
const appDirectory = process.cwd();
const resolveOwn = (relativePath: string) => path.resolve(__dirname, '..', relativePath); // 현재 파일 기준 루트 경로
const resolveApp = (relativePath: string) => path.resolve(appDirectory, relativePath); // 생성되는 앱의 루트 경로
const ownPath = resolveOwn('.');
const appPath = resolveApp('.');
const paths: WebpackCompiler.Paths = {
// 로컬 개발 환경 여부
isLocal: ownPath === appPath,
// builder 패키지 내 경로 (own*)
ownPath: path.resolve(ownPath),
ownPackageJson: resolveOwn('package.json'),
ownTemplate: resolveOwn('template'),
ownNodeModules: resolveOwn('node_modules'),
// 애플리케이션 내 경로 (app*)
appPath: path.resolve(appPath),
appBuild: resolveApp('dist'),
appCached: resolveApp('node_modules/.cache'),
appPackageJson: resolveApp('package.json'),
appPublic: resolveApp('public'),
appSrc: resolveApp('src'),
appTypes: resolveApp('types'),
appAssets: resolveApp('src/assets'),
appNodeModules: resolveApp('node_modules'),
appDotEnv: resolveApp('.env'),
};
// LaunchType: build-normal | build-nodejs | dev-server | analyze-server | analyze-stats | analyze-html
const launchType: WebpackCompiler.LaunchType = 'build-normal';
function bundlingProgress (): void {
console.log('Start build...');
try {
const { compiler } = WebpackCompiler.initialize(launchType, compilerConfig, paths);
compiler.run((err, stats) => {
if (err) {
console.error(err.message);
console.log(err);
process.exit(1);
}
console.log(stats);
process.exit(0);
});
} catch (e) {
console.error(e);
}
}
Change Log
프로젝트 변경사항은 CHANGELOG.md 파일 참조.
License
프로젝트 라이센스는 LICENSE 파일 참조.