2014-07-24 2 views
15

내 js 파일의 이름을 바꾸기 위해 grunt-hash 플러그인을 사용하고 싶습니다.그룬 - 파일에서 json 객체를 읽으십시오.

hash: { 
    options: { 
     mapping: 'examples/assets.json', //mapping file so your server can serve the right files 

지금 내가 ('된 .js 인덱스 - {해시}'로 '하는 index.js를'이름을 모든 용도를 대체하여이 파일에 대한 링크를 수정해야합니다 이 플러그인은 이름이 바뀐 파일의지도를 포함하는 새로운 파일을 생성) 그래서 grunt-text-replace 플러그인을 사용하고 싶습니다. 내가 교체 cofigure 할 필요가 문서에 따르면 :

replace: { 
    example: { 
    replacements: [{ 
     from: 'Red', // string replacement 
     to: 'Blue' 
    }] 
    } 
} 

어떻게 각 파일에 대한 {해시} 값을 얻고 작업을 대체를 제공하기 위해 JSON 매핑 파일을 읽을 수 있을까?

+0

@ 미래 독자 : 파일을 읽으려면 ['grunt.file.read'] (https://gruntjs.com/api/grunt.file#grunt.file.read)를 사용하십시오. – jpaugh

답변

22
grunt.file.readJSON('your-file.json') 

아마도 당신이 찾고있는 것입니다.

약간의 테스트를 설정했습니다. 내 Gruntfile.js에서

{ 
    "mapping": [ 
    {"file": "foo.txt"}, 
    {"file": "bar.txt"} 
    ] 
} 

나는 다음과 같은 간단한 테스트 작업을 작성한는 '매핑에서 첫 번째 개체를 읽습니다 : 나는 다음과 같은 JSON 객체를 포함하는 간단한 JSON 파일'mapping.json '을 가지고 '-array는 다음 그런트 작업을 호출 할 때

grunt.registerTask('doStuff', 'do some stuff.', function() { 
    mapping = grunt.file.readJSON('mapping.json'); 
    grunt.log.write(mapping.mapping[0]["file"]).ok(); 
}); 

로 될 것입니다 콘솔 출력은 다음과 같습니다

$ grunt doStuff 
Running "doStuff" task 
foo.txtOK 

Done, without errors. 

난이 도움이되기를 바랍니다! :)

+0

태스크를 대체하기 위해'mapping' 변수를 제공 할 수 있습니까? 또는 전역 변수에 추출하십시오. – Livon

+0

대체 작업을 올바르게 이해할 수 있을지 모르겠지만 교체 작업 내에서 JSON 파일을 읽을 수 없습니까? – lumannnn

+0

방금 ​​내 질문을 업데이트했습니다. 대체 작업 구성을 확인하십시오. – Livon

관련 문제