在建项目的时候常常会建不少文件夹和文件,今天使用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
命令初始化项目