UNPKG

code-auto

Version:
102 lines (79 loc) 3.45 kB
# Code-auto 通过命令行自动根据自定义模板生成代码文件 ## Install *./codeAuto.js* npm install code-auto var codeAuto=require("code-auto"); const config = { dialect: "mysql", 数据库类型(mysql,Postgres,Sqlite3,MSSQL) port: '3306', 端口(仅mysql和Postgres) host: "127.0.0.1", 数据库服务器地址 username: "root", 数据库账号 pwd: "password", 数据库密码 storage: "database", 数据库名 Templates: './codetpl', 模板文件夹路径 (模板定义为*.ct) codetype: "js" 代码类型(决定columns变量中CodeType) ( c# || java || js ) } codeAuto.run(config,function(err){ if(err){ throw new Error(err); } console.log("完成") }) $node node codeAuto.js ## 依赖 在使用Code-auto 你需要在全局安装正确你使用的数据库 Example for MySQL/MariaDB `npm install -g mysql` Example for Postgres `npm install -g pg pg-hstore` Example for Sqlite3 `npm install -g sqlite` Example for MSSQL `npm install -g mssql` ## 模板内置变量 tableName:表名 columns:当前表的所有列 columns item: name 列名 type 数据类型 CodeType 代码内使用的数据类型(根据配置代码类型生成( c# || java || js )) primaryKey (false || true) 是否主键 allowNull (false || true) 是否可以为NULL defaultValue 默认值 ## 模板定义 模板必须包含在template内,同时在template上定义output属性做为生成输出路径 ##列 <template output='./model'> /* jshint indent: 2 */ module.exports = app => { const sequelize = app.Sequelize; const entity = { {{#columns.forEach(function(column,index){ }} {{column.name}}: { type: {{column.CodeType}}, allowNull: {{column.allowNull}}, {{column.primaryKey?"primaryKey:"+column.primaryKey+",":""}} {{column.autoIncrement?"autoIncrement:"+column.autoIncrement:""}} }{{index==(columns.length-1)?'':','}} {{# }); }} } const nav_cat = app.model.define('{{tableName}}', entity, { tableName: '{{tableName}}' }); {{tableName}}.getModel=model=>{ if(typeof model!=="object"){ throw new Error("请求参数错误"); return false; } let newobj={}; for (var key in model) { if (entity.hasOwnProperty(key)) { newobj[key]=model[key]; } } return newobj; } return {{tableName}}; }; </template>