- 다음은 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.
