2017-08-28 35 views
1

我正在開發一個需要現在開源的項目,我們需要在每個文件的頂部添加Apache許可證字符串。tslint檢查每個文件是否存在文件開頭的特定字符串

話雖如此,我希望我的tslint檢查每個打字稿文件頂部是否存在特定的字符串,如果該字符串不存在,則顯示錯誤。

/* 
* Copyright 2017 proje*** contributors 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 

我沒有看到任何TS Lint配置檢查字符串是否存在。

有什麼辦法可以實現它。

回答

0

在審查了很多選項之後,我在代碼中放置了一個預先提交的鉤子,並配置節點腳本以在存儲庫上嘗試提交之前執行。

有一個在npmjs可用的模塊,這將使它更容易,你可以很容易地

做1.安裝模塊

npm i --save-dev pre-commit 

2.develop一個腳本,將運行作爲procommit鉤子來查找代碼中的特定刺痛。

// code to find specific string 
(function() { 
    var fs = require('fs'); 
    var glob = require('glob-fs')(); 
    var path = require('path'); 
    var result = 0; 
    var exclude = ['LICENSE', 
    path.join('e2e', 'util', 'db-ca', 'rds-combined-ca-bundle.pem'), 
    path.join('src', 'favicon.ico')]; 
    var files = []; 
    files = glob.readdirSync('**'); 
    files.map((file) => { 
    try { 
     if (!fs.lstatSync(file).isDirectory() && file.indexOf('.json') === -1 
      && exclude.indexOf(file) === -1) { 
     var data = fs.readFileSync(file, 'utf8'); 

     if (data.indexOf('Copyright 2017 candifood contributors') === -1) { 
      console.log('Please add License text in coment in the file ' + file); 
      result = 1; 
     } 
     } 
    } catch (e) { 
     console.log('Error:', e.stack); 
    } 
    }); 
    process.exit(result); 
})(); 

3.place鉤在的package.json執行

{ 
    "name": "project-name", 
    "version": 1.0.0", 
    "license": "Apache 2.0", 
    "scripts": { 
    "license-check": "node license-check", 
    }, 
    "private": true, 
    "dependencies": { 
    }, 
    "devDependencies": { 
    "pre-commit": "1.2.2", 
    }, 
    "pre-commit": [ 
    "license-check" 
    ] 
} 
相關問題