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

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

more-copy.js

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


github: https://github.com/mouday/more-copy.js

npm: https://www.npmjs.com/package/more-copy

安装

# 建议全局安装
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;

相关文章
|
6月前
|
JavaScript API
深入探索fs.WriteStream:Node.js文件写入流的全面解析
深入探索fs.WriteStream:Node.js文件写入流的全面解析
|
7天前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
44 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
27天前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
52 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
4月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
63 0
|
3月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
124 63
|
1月前
|
JavaScript 前端开发 API
Next.js 实战 (六):如何实现文件本地上传
这篇文章介绍了在Next.js中如何实现文件上传到本地的方法。文章首先提到Next.js官方文档中没有提供文件上传的实例代码,因此开发者需要自行实现,通常有两种思路:使用Node.js原生上传或使用第三方插件如multer。接着,文章选择了使用Node.js原生上传的方式来讲解实现过程,包括如何通过哈希值命名文件、上传到指定目录以及如何分类文件夹。然后,文章展示了具体的实现步骤,包括编写代码来处理文件上传,并给出了代码示例。最后,文章通过一个效果演示说明了如何通过postman模拟上传文件,并展示了上传后的文件夹结构。
|
5月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
168 2
前端JS读取文件内容并展示到页面上
|
5月前
|
JavaScript 前端开发 数据安全/隐私保护
混淆指定js文件
【9月更文挑战第26天】JavaScript 混淆旨在保护代码知识产权、减小文件体积和提高安全性。方法包括变量名和函数名混淆、代码压缩、控制流平坦化及字符串加密。常用工具如 UglifyJS 和 JScrambler 可实现这些功能。然而,混淆可能带来兼容性和调试困难等问题,需谨慎使用并确保法律合规。
|
5月前
|
移动开发 JavaScript 前端开发
js之操作文件| 12-5
js之操作文件| 12-5
|
6月前
|
JSON 前端开发 JavaScript

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    53
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62