使用 gruntjs 自定义初始化任务重命名模板文件夹
rename templates folders with a gruntjs custom init task
我正在尝试为 Grunt 中的个人模板创建自定义初始化任务。
这是在grunt init:mytemplate
后生成我的新项目的 js
exports.description = 'Try Grunt';
exports.warnOn = '*';
exports.template = function(grunt, init, done) {
grunt.helper('prompt', {type: 'skin'}, [
grunt.helper('prompt_for', 'name', 'trygrunt'),
grunt.helper('prompt_for', 'title', 'Im Trying GruntJS'),
grunt.helper('prompt_for', 'author_name', 'Myself')
],
function(err, props) {
var files = init.filesToCopy(props);
init.copyAndProcess(files, props);
done();
});
};
一切正常:根据rename.json
信息从自定义模板的root
文件夹正确生成或重命名文件和文件夹。
问题是:如何动态重命名文件夹而不仅仅是文件?
即
{
"libs/name.js": "libs/{%= name %}.js" //this works fine
"src/name": "src/{%= name %}" //this doesn't work
}
init.filesToCopy
方法在首次生成 files
对象时仅查看特定文件(而不是目录)匹配项renames.json
。最好的办法是以编程方式修改 init.filesToCopy
和 init.copyAndProcess
之间的 files
对象。
这可以通过修改 init.filesToCopy 对象的结果来实现。 但是,您需要修改键而不是每对的值。
例如,我有一个名为lib/的文件夹,我希望将内容复制到app/
var files = init.filesToCopy(props),
libFolder = 'app';
// Repath the files correctly
for (var file in files) {
if (file.indexOf('lib/') > -1) {
var path = files[file],
newFile = file.replace('lib/', libFolder + '/');
files[newFile] = path;
delete files[file];
}
}
init.copyAndProcess(files, props);
还值得注意的是,rename.json 适用于 lib/值而不是新文件夹。
我所做的一件事是使用 props.main 值来提取 libFolder 值(例如 libFolder = props.main.split('/')[0])
实现此目的并绕过无法重命名文件夹的限制的另一种方法是 1) 设置一个 grunt-contrib-copy 任务来复制文件夹和文件并将您需要的任何名称应用于新文件夹/文件,然后 2) 让一个 grunt-contrib-clean 任务清理旧文件/文件夹,从而产生与重命名文件夹相同的净效果。
相关文章:
- 正在使用Dropzone.js删除服务器上已重命名的文件
- 如何使用laravel重命名已存储在服务器中的文件
- gulp重命名多个文件
- 使用 gruntjs 自定义初始化任务重命名模板文件夹
- 重命名上传的文件Ruby On Rails
- 导出时如何重命名excel文件
- 重命名Alfresco脚本中的文件
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- 使用AjaxForm Jquery重命名文件
- 批量文件重命名
- 在S3中上传之前重命名文件
- 在multer中重命名上载的文件
- 仅对文件进行 Gulp 重命名,而不重命名目录
- 使用序号重命名文件 - 从文件夹中的最高数字开始索引
- 在Express.js应用中自动添加/重命名文件夹
- 使用Gulp和Gulp替换名称克隆一个项目,但重命名多个文件夹中包含某个单词的文件
- 重命名zip文件后,我无法删除node.js中的文件夹
- 如何在Chrome上下载文件而不将文件自动重命名为“下载”
- gruntjs:将文件+文件夹重命名为任务
- 如何使用grunt重命名文件夹名称