2016-11-11 1 views
0

나는 grunt build를 가지고있다. 거기에 grunt-bumpgrunt-replace 있습니다. 나는 grunt-bump을 사용하여 실행할 때마다 pkg.json에 하나의 버전을 올려 놓습니다. grunt-replace을 실행할 때마다 index.js 버전을 pkg.json 버전 번호로 바꿔야합니다. 그러나 일단 변수 @@ 패키지가 바뀌면 변수는 더 이상 존재하지 않기 때문에 반복해서 할 수 없습니다.Grunt에서`index.js` 파일의 버전을 대체하기 위해`pkg.json` 버전을 변수로 반복적으로 가져 오는 방법이 있습니까?

Gruntfile.js :

module.exports = function(grunt) { 

grunt.initconfig({ 
pkg: grunt.file.readjson('package.json'), 

bump: { 
    options: { 
    files: ['package.json'], 
    updateconfigs: [], 
    commit: false, 
    commitmessage: 'release v%version%', 
    commitfiles: ['package.json'], 
    createtag: false, 
    tagname: 'v%version%', 
    tagmessage: 'version %version%', 
    push: false, 
    pushto: 'upstream', 
    gitdescribeoptions: '--tags --always --abbrev=1 --dirty=-d', 
    globalreplace: false, 
    prereleasename: false, 
    metadata: '', 
    regexp: false 
    } 
}, 

replace : { 
    dist : { 
    options : { 
     patterns : [ 
     { 
      match: 'packageJsonVersion', 
      replacement: '<%= pkg.version %>'; 
     } 
     ] 
    }, 

    files : [ 
     { 
     expand : true, 
     flatten : true, 
     src : [ 'index.html' ], 
     dest : './' 
     }, 
    ] 
    } 
}, 
}); 

grunt.loadnpmtasks('grunt-bump'); 
grunt.loadnpmtasks('grunt-replace'); 

grunt.registertask('default', ['uglify']); 
}; 

index.html을 : 보통

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 


    <script src="[email protected]@packageJsonVersion.js"></script> 
</body> 
</html> 

답변

2

, 나는 변수를 포함 내 기본 index.html 파일 내 src 폴더에 교체해야하지만 실제로 파일을 복사 build 폴더 (또는 실제로 사용중인 정적 자산을 포함하는 폴더)에서 바꾸기를 수행하십시오. 이렇게하면 기본 파일이 변경되지 않습니다.
dest을 변경하고 웹 서버가 index.html의 현명한 버전을 가리킬 수 있습니까?

files : [ 
     { 
     expand : true, 
     flatten : true, 
     src : [ 'index.html' ], 
     dest : 'build/index.html' 
     }, 
    ] 
+0

네, 지난 주에 제가 끝난 것입니다. – 7537247