아래는 EC6 모듈을 정적, 전역 스크립트로 컴파일하는 Gulp 태스크를 위한 가이드 문서의 예시입니다. 이 가이드는 Gulp를 사용하여 EC6 모듈을 컴파일하고, 이를 브라우저에서 전역적으로 사용할 수 있게 하는 방법에 대해 설명합니다.
이 가이드는 Gulp를 사용하여 EC6 모듈을 정적, 전역 스크립트로 컴파일하는 방법을 설명합니다. 이 방법을 통해, EC6 모듈이 브라우저에서 전역적으로 사용될 수 있도록 하며, node_modules
에서 다른 모듈을 import
하여 사용하는 경우에도 적용됩니다.
gulp
: Gulp 자체browserify
: Browserify, 브라우저에서 Node.js 스타일의 require()
를 사용할 수 있게 해줌babelify
: Babel 변환기를 Browserify와 함께 사용vinyl-source-stream
: Browserify 스트림을 Gulp로 변환vinyl-buffer
: Gulp에서 사용할 수 있도록 Buffer로 변환gulp-sourcemaps
: 소스맵 생성gulp-terser
: JavaScript 코드 압축gulp-rename
: 파일 이름 변경gulp-decomment
: 주석 제거npm install gulp browserify babelify vinyl-source-stream vinyl-buffer gulp-sourcemaps gulp-terser gulp-rename gulp-decomment --save-dev
function compileModules(pathInfo) {
return new Promise((resolve, reject) => {
console.log("Compiling scripts: " + pathInfo.srcDir + "/*.js");
const moduleName =
pathInfo.pluginName.charAt(0).toUpperCase() +
pathInfo.pluginName.slice(1);
const publicDestDir = `public/${pathInfo.destDir}`;
const b = browserify({
entries: pathInfo.srcDir + `/${pathInfo.pluginName}.js`,
debug: true,
standalone: moduleName, // 모듈을 전역 변수로 노출
transform: [babelify.configure({ presets: ["@babel/preset-env"] })],
});
return b.bundle()
.pipe(source(pathInfo.pluginName.toLowerCase() + ".js"))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(decomment({ safe: true }))
.pipe(gulp.dest(pathInfo.destDir))
.pipe(concat(pathInfo.pluginName.toLowerCase() + ".js"))
.pipe(terser())
.pipe(rename({ suffix: ".min" }))
.pipe(sourcemaps.write("./"))
.pipe(gulp.dest(pathInfo.destDir))
.pipe(gulp.dest(publicDestDir))
.on("end", resolve)
.on("error", (err) => {
console.error("Compile error:", err);
reject(err);
});
});
}
pathInfo
: 모듈의 경로 및 이름 정보를 담고 있는 객체moduleName
: 모듈 이름을 PascalCase로 변환publicDestDir
: 컴파일된 파일을 저장할 public 디렉터리 경로 계산browserify
: 모듈의 진입점 지정 및 standalone
옵션으로 전역 변수 노출 설정babelify
: EC6 코드를 브라우저에서 호환 가능한 JavaScript로 변환source
및 buffer
: Browserify 스트림을 Gulp 스트림으로 변환sourcemaps
, decomment
, terser
, rename
: 소스맵 생성, 주석 제거, 코드 압축, 파일 이름 변경gulp.dest
: 컴파일된 파일 저장이 가이드를 따르면 EC6 모듈을 정적, 전역 스크립트로 컴파일하고 브라우저에서 사용할 수 있습니다.
이 가이드는 Gulp 태스크에 대한 기본적인 설명을 제공합니다. 실제 프로젝트에 맞게 세부사항을 조정하고, 필요에 따라 추가적인 설명을 추가할 수 있습니다.
[javascript] 조건에 따라서 동적으로 module을 import하기 (0) | 2023.12.10 |
---|---|
[javascript] CommonJS, AMD, 전역 객체의 차이가 뭐지?? (0) | 2023.11.12 |
[javascript/typescript] export와 import 방식을 정확히 알고 쓰기 (0) | 2023.10.21 |
ES6 / ES2015 Gulp 컴파일 시, Uglify Error 해결하기 (0) | 2022.01.30 |
ECMAScript 6 (ES6/ES2015) Gulp에서 사용하기 (0) | 2022.01.30 |
댓글 영역