- 다음은 README 및 예제입니다 : https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md .
- 다음은 https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js 에서 코드의 관련 부분 (내가 이해할 수없는 부분)입니다 .
module.exports = function (grunt) { '엄격한 사용'; var path = require ( 'path'); grunt.registerMultiTask ( 'copy', 'Copy files.', function () { var kindOf = grunt.util.kindOf; var options = this.options ({ processContent : 거짓, processContentExclude : [] }); var copyOptions = { 프로세스 : options.processContent, noProcess : options.processContentExclude }; grunt.verbose.writeflags (options, 'Options'); var dest; var isExpandedPair; var tally = { dirs : 0, 파일 : 0 }; this.files.forEach (function (filePair) { isExpandedPair = filePair.orig.expand || 그릇된; filePair.src.forEach (function (src) { if (detectDestType (filePair.dest) === '디렉터리') { dest = (isExpandedPair)? filePair.dest : unixifyPath (path.join (filePair.dest, src)); } else { dest = filePair.dest; } if (grunt.file.isDir (src)) { grunt.verbose.writeln ( 'Creating'+ dest.cyan); grunt.file.mkdir (dest); tally.dirs ++; } else { grunt.verbose.writeln ( 'Copying'+ src.cyan + '->'+ dest.cyan); grunt.file.copy (src, dest, copyOptions); tally.files ++; } }); });
답변
확장을 사용하면 대상 경로를 전체 (예 :)로 만들 것인지 아니면 /path/missing1/missing2
부모가 존재할 때 마지막 디렉토리 만 만들 것인지 () 지정할 수 있습니다 /path/existing/missing
.
답변
때문에 expand
불평 소리의 일부가 꿀꿀-있는 contrib 복사에 대한 구체적인 아니라,에 대한 정보는에서 찾을 수 있습니다 그런트의 파일 구성 API :
설정
expand
하기 위해true
다음과 같은 옵션을 사용하려면 :
cwd
모든src
일치 항목은이 경로를 기준으로합니다 (포함하지 않음).src
를 기준으로 일치시킬 패턴cwd
입니다.dest
대상 경로 접두사.ext
생성 된dest
경로 에서 기존 확장을이 값으로 바꿉니다 .extDot
확장을 나타내는 기간이있는 위치를 나타내는 데 사용됩니다.'first'
(확장은 파일 이름의 첫 번째 마침표 이후에 시작됨) 또는'last'
(확장자는 마지막 마침표 이후에 시작됨 ) 중 하나를 사용할 수 있으며 기본적으로'first'
.flatten
생성 된dest
경로 에서 모든 경로 부분을 제거합니다 .rename
이 함수는 일치하는 각src
파일 에 대해 호출됩니다 (확장자 이름 변경 및 병합 후).dest
와 일치하는src
경로가 전달되며,이 기능은 새로운 반환해야합니다dest
값입니다. 동일한 항목dest
이 두 번 이상 반환되면 해당 항목src
을 사용한 각 항목 이 소스 배열에 추가됩니다.
또한 그것은 것 같아 dest
항상 설정하는 경우 대상 디렉토리로 간주됩니다 expand
에 true
.