Total: Today: Yesterday:
연구소/node.js | 2016. 4. 15. 17:44 | Posted by 자수씨

회사에서 게임 개발/운영 업무를 하다보니 신규 컨텐츠 제작 시 반복적인 신규 리소스 배포작업을 하고 있었습니다.


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``` 태스크 설정을 합니다.



파일 복사 테스트도 끝났으니 이제 마지막 배포 작업만이 남았습니다.