【问题标题】:What does the "expand" option do in grunt-contrib-copy? The examples all use it but the docs say nothing about what it doesgrunt-contrib-copy 中的“扩展”选项有什么作用?示例都使用它,但文档没有说明它的作用
【发布时间】:2013-06-03 09:26:56
【问题描述】:
  1. 这是自述文件和示例:https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md
  2. 这是来自https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js的代码的相关部分(我显然无法理解):
module.exports = 功能(咕噜声){ '使用严格'; var path = require('path'); grunt.registerMultiTask('copy', '复制文件。', function() { var kindOf = grunt.util.kindOf; var options = this.options({ 处理内容:假, 处理内容排除:[] }); var 复制选项 = { 流程:options.processContent, noProcess:options.processContentExclude }; grunt.verbose.writeflags(options, 'Options'); 变量目标; var isExpandedPair; 变量计数 = { 目录:0, 文件:0 }; this.files.forEach(函数(文件对){ isExpandedPair = 文件对.orig.expand ||错误的; 文件对.src.forEach(函数(src){ if (detectDestType(filePair.dest) === '目录') { dest = (isExpandedPair) ? filePair.dest : unixifyPath(path.join(filePair.dest, src)); } 别的 { dest = 文件对.dest; } if (grunt.file.isDir(src)) { grunt.verbose.writeln('创建' + dest.cyan); grunt.file.mkdir(dest); 理货.dirs++; } 别的 { grunt.verbose.writeln('正在复制 ' + src.cyan + ' -> ' + dest.cyan); grunt.file.copy(src, dest, copyOptions); 理货.文件++; } }); });

【问题讨论】:

标签: javascript gruntjs


【解决方案1】:

由于expand 是 Grunt 的一部分,而不是特定于 grunt-contrib-copy,因此可以在 Grunt's file configuration API 中找到有关它的信息:

expand 设置为true 以启用以下选项:

  • cwd 所有src 匹配都相对于(但不包括)此路径。
  • src 要匹配的模式,相对于 cwd
  • dest 目标路径前缀。
  • ext 在生成的dest 路径中将任何现有扩展替换为此值。
  • extDot 用于表示表示分机的句号所在的位置。可以采用'first'(扩展名从文件名中的第一个句点后开始)或'last'(扩展名从最后一个句点后开始),默认设置为'first'
  • flatten 从生成的dest 路径中删除所有路径部分。
  • rename 为每个匹配的src 文件调用此函数,(在扩展名重命名和展平之后)。传入dest 和匹配的src 路径,此函数必须返回一个新的dest 值。如果多次返回相同的dest,则每个使用它的src 都将被添加到它的源数组中。

此外,如果将expand 设置为true,似乎dest 将始终被视为目标目录。

【讨论】:

  • 更好的答案。但这在任何地方都没有记录吗?
  • 我实际上是在第二次查看后找到了文档,并且我已经相应地更新了我的答案。
  • 我添加了文档中提供的有用示例。现在更清楚了。
【解决方案2】:

Expand 可让您指定是要创建完整的目标路径(例如:/path/missing1/missing2),还是仅在其父目录存在时创建最后一个目录(/path/existing/missing)。

【讨论】:

  • 啊,所以它实际上是 mkdir 的 -p 选项。明白了,谢谢!
  • 这个答案不正确。它充其量是简化的。
  • -1。这是误导 - 基于这个答案,我删除了 expand: true,认为我不需要它,然后我的构建停止工作。
猜你喜欢
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多