NodeJS로 작성된 프로젝트를 고객사에 배포해야 할 경우나 남에게 소스코드를 노출하고 싶지 않은 경우 아래와 같은 방법을 통해 난독화된 코드를 배포하거나 하나의 실행파일로 만들어서 배포할 수 있습니다.
gulp 설치
npm i gulp -g
uglify 설치
npm i gulp-uglify-es -D
obfuscator 설치
npm i gulp-javascript-obfuscator -D
gulpfile.js 파일을 아래와같이 작성합니다.
const gulp = require('gulp');
const uglify = require('gulp-uglify-es').default;
gulp.task('uglify', () => gulp.src('dist/**/*.js').pipe(uglify()).pipe(gulp.dest('publish')));
gulp.task('default', gulp.series(['uglify']));
저의 경우 tsc로 컴파일된 js 파일들을 dist 폴더에 저장하기 때문에 gulp.src('dist/**/*.js')로 설정했고 최종 output은 publish 폴더에 저장되도록 한 케이스입니다.
이제 커맨드창에서 gulp를 실행하면 publish 폴더에 uglify와 obfuscate가 적용된 js 파일들이 저장됩니다.
난독화된 js코드 대신 binary 파일로 패키징해서 배포하기 위해 pkg를 설치해줍니다. (참고: https://github.com/vercel/pkg)
npm install -g pkg
publish폴더에 난독화된 js코드들을 패키징하기 위해 아래 명령어를 입력합니다. (entry file이 index.js 인 경우. entry file이 다르면 해당 js파일 명을 입력)
pkg publish/index.js -t node18-linux-x64 --out-path=bin
패키징이 완료되면 bin 폴더 안에 해당 target platform용 binary파일이 생성된건 확인 할 수 있습니다. target platform 지정에 관한 자세한 내용은 github(https://github.com/vercel/pkg)에서 확인하시면 됩니다.