当前位置: 首页 > 工具软件 > more.js > 使用案例 >

more-copy.js指定文件模板生成到指定的文件目录下

公冶高义
2023-12-01

more-copy.js

指定文件模板生成到指定的文件目录下

安装

# 建议全局安装
npm i more-copy -g

使用

1、命令行

$ mcp [模板路径] [输出路径] [-p json字符串] [-c 配置文件路径]

eg:
$ mcp template.js demo.js

参数

-c 指定配置文件路径 默认为 ./more-copy.config.js
-p 传入参数,接收json格式的字符串

2、用户代码

const { renderToFile } = require('more-copy');

renderToFile({ input, output });

模板

模板渲染基于 Nunjuck.js,言下之意,支持 Nunjuck.js 的所有模板语法
https://nunjucks.bootcss.com/templating.html

命令行

通常情况下,一个项目的文件生成路径是固定的,可以结合 package.json 或者 make 简化命令行

配置

当前目录下可以配置 more-copy.config.js

// 插件示例
const { MkdirPlugin, ParsePlugin, TimePlugin } = require('more-copy');

// 使用自定义插件
const CustomPlugin = require('./custom-plugin.js');

module.exports = {
  // 开启调试
  debug: true,
  // 使用插件,有先后顺序
  plugins: [new CustomPlugin()],
};

已实现插件

用户可以使用插件来给 options 添加参数

插件约定添加 options 对象上的属性,以插件名命名,特殊除外。

例如:使用 ParsePlugin 将会添加属性options.parse

// 插件基类,自定义插件推荐继承该基类,并实现其方法
Plugin(options);

// 1、递归创建目标文件夹
MkdirPlugin();

// 2、改变输出文件名的命名风格,支持naming-style的所有风格参数
// eg: {style: 'pascal'}
OutputNamingPlugin({ style });

// 3、解析路径参数
ParsePlugin();

// 4、ThinkPHP需要用得的参数
// 支持额外参数 -p '{"name": "table_name"}'
ThinkphpPlugin({ prefix: '表前缀' });

// 5、时间插件
TimePlugin();

// 6、Vue需要的参数
// 支持额外参数 -p '{"name": "name"}'
VuePlugin();

// 7、从MySQL中查询数据
// -p '{sql, data}'
MySQLPlugin({
  config
});

// 8、从MySQL中查询表数据数据
// -p '{table}'
TablePlugin({
  config
});

// 9、改变输出文件夹的命名风格,支持naming-style的所有风格参数
OutputDirnameNamingPlugin({style})

自定义插件

custom-plugin.js 用来处理模板入参

const Plugin = require('more-copy');

class CustomPlugin extends Plugin {
  process_options(options) {
    options.custom = {
      name: 'Tom',
    };

    return options;
  }
}

module.exports = CustomPlugin;
 类似资料: