2014-01-13 2 views
0

노드를 사용하여 파일 끝에있는 html 파일 내용을 업데이트하는 데 약간의 노력을 기울이기 시작했습니다. 이것은 내 Grunt 파일의 템플릿 파일입니다. 문제점 나는 데 :노드 createWriteStream 그란트 패키지

  1. 내가 package.json 버전으로 파일의 끝을 업데이트하려면이 코드를 사용하고 있습니다 :

    appVersion = fs.createWriteStream('./src/file.html', {'flags' : 'a'});

    appVersion.write(grunt.file.readJSON('package.json').version);

유일한 문제는 내가 쓸데없는 소리를 낼 때, 내가 쓸데없는 소리를 낼 때마다 파일의 끝에 그것을 덧붙인다는 것이다. 다시 쓰기 전에 버전을 제거하는 방법이 있습니까?

감사합니다.

업데이트 - 이것은 Write in a text file without overwriting in fs node js과 함께합니다. 궁금해서 "+"플래그를 사용하면 버전을 삭제하고 다시 추가 할 수 있는지 배우려고합니까?

답변

0

원본 파일에서 버전을 계속해서 바꾸는 대신 소스 파일에 "마커"를 넣고 마커를 실제 값으로 바꾸어 대상으로 처리하는 것이 좋습니다. 당신이 갈 때 이제

grunt.initConfig({pkg: grunt.file.readJSON('package.json')} 

: (꿀꿀 템플릿을 사용하여)입니다

: 당신의 gruntfile 설정에서

<html> 
<body> 
<%= pkg.version %> 
</body> 
</html> 

:

그런 당신의 HTML 소스 파일이 html 파일을 최종 목적지로 복사하려면 grunt-template을 사용하여 내용을 처리하십시오.

grunt.config('copy.myhtml', { 
    options: { 
     processContent: function (content, srcpath) { 
     return grunt.template.process(content); 
     } 
    }, 
    files: [{src: "src/index.html", dest: "output/index.html"}] 
    }); 

이제 grunt copy : myhtml을 호출하면됩니다.

나는 이것이 정확히 당신이 염두에 두지 않았지만 도구의 철학 (예 : grunt)에 더 잘 맞는 워크 플로 일 가능성이 높습니다. 결과는 원하는 것입니다. html 파일).

희망이 있습니다.

+0

감사합니다. 위의 옵션을 사용하여 수행 할 수없는 경우이 옵션을 사용할 것입니다. 대신 "a +"를 사용하는지 알아 내려고 노력하고 있는데 삭제하고 다시 쓸 수 있습니까? 그렇지 않다면, 나는 (이전에 사용했던) grunt-template으로 갈 것입니다. – pertrai1

+0

+를 사용하여 문제가 변경되지는 않습니다. 단지 파일을 읽고 추가하기 위해 열어야한다는 것을 의미합니다. 당신이하고 싶은 일은 내용을 읽고 내용을 분석 한 다음 이전 버전이있는 부분을 찾아서 새 버전으로 바꾸고 파일을 다시 작성하는 것입니다. 모드 (a/a +)는 마술;) –