2016-08-04 2 views
5

내 gulpfile.js assets 또는 src 변수를 개별 파일로 분리하여 더 잘 관리 할 수있게하려고합니다. 예를 들면 :별도의 꿀풀 파일에서 변수 가져 오기/읽기

.... 

var scripts = ['awful.js', 'lot.js', 'of.js', 'js.js', 'files.js'] 

....(somewhere down the line) 

gulp.task('vendorjs', function() { 
    return gulp.src(scripts) 

     .pipe(concat('vendor.js')) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(uglify()) 
     .pipe(gulp.dest(paths.root + 'dist')) 
     .pipe(notify({ message: 'vendorjs task completed' })); 
}); 

그래서 방법은 실제로 프로그래머 별도의 파일로 scripts 변수를 이동하고 gulpfile.js에서 액세스 할 수있는 경우 기본적으로 내가 관심 것을. 내가 좋아하는 뭔가 찾고 있었어요

:이 파일의 내용을 읽을 않는 동안

require("fs").readFile('gulp/test.js', function(e, data) { 
    //(test.js would be the file that holds the scripts var) 
}); 

Howerver, 난 여전히 gulpfile.js에서 액세스 할 수 없습니다. 모든 팁이나 아이디어를 높이 평가합니다.

답변

7

Node.js를 할 것이라고는 require()을 사용하여 다른 파일을 가져올 수 있습니다. three types of files :

  • JSON 파일을 지원합니다. 그것에 대해서는 DavidDomain's answer을 참조하십시오.
  • 바이너리 Node.js 애드온. 귀하의 유스 케이스에 유용하지 않습니다.
  • 자바 스크립트 파일. 그것이 당신이 원하는 것입니다.

JavaScript 파일의 경우 require()에서 반환 된 값은 가져온 파일에서 module.exports에 할당 된 값입니다. 사용 사례에 대한 그래서

:

꿀꺽가/test.js

var arrayOfFiles = ["awful.js", "lots.js"]; 
arrayOfFiles.push("of.js"); 
arrayOfFiles.push("js.js"); 
arrayOfFiles.push("files.js"); 
for (var i = 0; i < 10; i++) { 
    arrayOfFiles.push("some_other_file" + i + ".js");  
} 

module.exports = { 
    scripts: arrayOfFiles 
}; 

gulpfile.js

var test = require('gulp/test.js'); 

gulp.task('vendorjs', function() { 
    return gulp.src(test.scripts) 
    .pipe(concat('vendor.js')) 
    .pipe(rename({suffix: '.min'})) 
    .pipe(uglify()) 
    .pipe(gulp.dest(paths.root + 'dist')) 
    .pipe(notify({ message: 'vendorjs task completed' })); 
}); 
+0

오른쪽에 대한 소리, 그것을 밖으로 테스트하고 확인을했습니다. 감사! (20 시간 안에 현상금이 보내질 것입니다 :)) – RGLSV

2

json 파일을 사용하여 자산 또는 소스 파일 위치를 저장하고이를 gulp 파일에로드 할 수 있습니다. 예를 들어

:

// config.json 

{ 
    "scripts": ["awful.js", "lot.js", "of.js", "js.js", "files.js"] 
} 

그리고 당신 꿀꺽 파일에

당신이

// gulpfile.js 

var config = require('./config'); 

var scripts = config.scripts; 

console.log(scripts); 
+0

것은 파일보다 더 복잡 할 것입니다 즉,'var scripts = {main : [ 'some-script], notmain : ['etc ']}'와 같이'object'와 더 비슷합니다. 나는 총을 내고, 그것이 어떻게 작동하는지 보게 될 것이다. 감사! – RGLSV

+0

JSON은 JavaScript에서 파생되므로 사용자의 요구에 맞는 객체로 파싱 할 수있는 매우 복잡한 구조를 작성할 수 있어야합니다. 유효한 json 구문을 사용하는 한. – DavidDomain

+0

그래,하지만 그 파일에 대한 좀 더 '동적 인'접근법에 대해 고민하고있다. 그래서 나는 왜'.js' 파일을 요구 했는가; 어쩌면'for 루프 '를 전달하고 최종 출력물을'동적으로 '빌드하는 것과 같습니다. 단어 및/또는 올바른 단어가 맞는지 확실하지 않을 경우 D – RGLSV