node.js小工具--修改Xcode 'Create by'做者名稱

簡介

用Xcode建立源文件時會自動在文件開始位置加入以下注釋:node

//
//  ISSImageCycleScrollView.m
//  SoftTravel
//
//  Created by iss110302000283 on 16/2/26.
//  Copyright © 2016年 issuser. All rights reserved.
//

原理

這個實際上是經過Xcode的代碼模板(Template)生成的,Xcode的Template目錄在這個目錄:swift

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source

打開這個目錄,能夠看到各類文件對應的模板文件,例如:app

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

#import <Foundation/Foundation.h>

@protocol ___FILEBASENAMEASIDENTIFIER___ <NSObject>

@end

___FULLUSERNAME___就是做者名,修改此模板後,在Xcode中建立相應文件時就會生效ui

批量腳本

這裏提供一個node.js的腳本,批量修改Xcode的模板,將 ___FULLUSERNAME___做者名修改爲咱們想要的:code

// updateXcodeTemplate.js
const fs = require('fs');
const path = require('path');

// 須要修改的模板文件後綴名
const extArray = [".h", ".m", ".cpp", ".hpp", ".swift", ".c"]

function updateTemplateFile(filePath)
{
    var stat = fs.statSync(filePath);
    if(stat.isFile())
    {
        if(extArray.indexOf(path.extname(filePath)) != -1)
        {
            var str = fs.readFileSync(filePath).toString();
            // 替換做者名
            var newStr = str.replace(/___FULLUSERNAME___/g, '張學友(___FULLUSERNAME___)');
            if(str != newStr)
            {
                fs.writeFileSync(filePath, newStr);
                console.log("update file: " + filePath);
            }
        }
    }
    else if(stat.isDirectory())
    {
                // 若是是文件夾,則遞歸調用
        var fileList = fs.readdirSync(filePath);
        for(var i = 0; i < fileList.length; i++)
        {
            updateTemplateFile(path.join(filePath, fileList[i]));
        }
    }
}

updateTemplateFile("/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File\ Templates/Source");

執行腳本:遞歸

// 注意須要用超級用戶權限修改,不然會提示沒有權限。
$ sudo node updateXcodeTemplate.js
相關文章
相關標籤/搜索