회사에서 게임 개발/운영 업무를 하다보니 신규 컨텐츠 제작 시 반복적인 신규 리소스 배포작업을 하고 있었습니다.
node.js 공부도 할겸 배포 스크립트 만들어봤습니다.
#h3 파일 복사하기
파일 복사 테스트를 위해 하드코딩으로 이미지 파일을 입력받은 아이디로 리네임된 파일을 복사 테스트를 해보았습니다.
```Gruntfile.js```
### js
'use strict';
module.exports = function(grunt) {
var readline = require('readline');
var resourceId = -1;
// Project configuration.
grunt.initConfig({
copy: {
main: {
}
}
});
grunt.registerTask('question', function() {
var done = this.async();
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Input resource ID: ', function(answer) {
rl.close();
resourceId = answer;
grunt.log.writeln('입력받은 아이디: ' + resourceId);
done();
});
});
grunt.registerMultiTask('copy', function() {
var options = this.options({
encoding: grunt.file.defaultEncoding,
timestamp: false,
mode: false
});
var copyOptions = {
encoding: options.encoding,
process: options.process,
noProcess: options.noProcess
};
var srcPath = 'grunt.png';
var destPath = resourceId + '.png';
grunt.file.copy(srcPath, destPath, copyOptions);
});
grunt.registerTask('default', [
'question', 'copy'
]);
};
파일 복사 작업을 진행하는 ```copy``` 라는 멀티 태스크를 만들고 디폴트 태스크에 추가하였습니다.
입력받은 아이디를 사용해야하기 때문에 ```question``` 태스크 다음에 실행되도록 순서를 지정하였습니다.
실행을 하면 다음과 같이 복사작업이 완료됩니다.
PS E:\temp\sources\grunt> grunt
Running "question" task
Input resource ID: UWO_22
입력받은 아이디: UWO_22
Running "copy:main" (copy) task
Done, without errors.
멀티태스크로 만들 경우 ```grunt.initConfig({...})``` 에 설정 값이 없으면 태스크를 인식하지 못하는 듯 합니다. 아직 아무런 값이 없지만 ```grunt.initConfig({...})``` 에 ```copy``` 태스크 설정을 합니다.
파일 복사 테스트도 끝났으니 이제 마지막 배포 작업만이 남았습니다.