在建項目的時候常常會建不少文件夾和文件,今天使用node初始化項目自動生成這些內容。css
node init
初始化項目生成package.jsonvar fs=require('fs'); var path=require('path'); module.exports.structure={ rootName:'item', fileData:[ { name:'images', type:'dir' }, { name:'css', type:'dir', fileChild: { name:'index.css', type:'file', content:'@charset utf-8;' } }, { name:'js', type:'dir', fileChild: { name:'index.js', type:'file', content:'/* Created by jines */' } }, { name:'index.html', type:'file', //讀取文件內容 content:fs.readFileSync(path.join(__dirname,'index.html')) }, { name:'404.html', type:'file', //讀取文件內容 content:fs.readFileSync(path.join(__dirname,'404.html')) } ] }
/* 初始化項目 */ const fs=require('fs'); const path=require('path'); const structure=require('../config.js').structure; let rootName=path.join('./',structure.rootName); module.exports=function(){ if(rootName){ //建立根目錄 fs.mkdir(rootName,function(){ structure.fileData.forEach(function (item) { if(item.type=='dir'){ //建立文件夾 fs.mkdir(rootName+'/'+item.name,function(){ for(var k in item){ //判斷子文件中是還有文件,若是有則建立 if(typeof item[k]=='object' && item[k].type=='file'){ fs.writeFileSync(rootName+'/'+item.name+'/'+item[k].name,item[k].content,'utf-8') } } }) }else if(item.type=='file'){ //建立文件 fs.writeFileSync(rootName+'/'+item.name,item.content,'utf-8') } }) }) } }
'user strict' //process.argv包含命令行參數的數組。 //第一個元素是node的路徑, //第二個元素是js文件的當前路徑。 //第三個元素是命令行的參數。 const args=process.argv.slice(2); const param=args[0]; const init=require('./command/init.js'); switch(param){ case 'init':init(); break; case '-v' :console.log('版本信息'); break; default: console.log('幫助信息'); break; }
node index.js init
生成文件文件目錄如圖所示
html
C:\dev\nvm\v6.5.0\node_modules
如圖所示
node
C:\dev\nvm\v6.5.0
路徑下新建文件item.cd並寫入以下代碼:@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\item\index.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\node_modules\item\index.js" %* )
如圖所示
json
item init
命令初始化項目