grunt-contrib-copy, 复制文件和文件夹

分享于 

8分钟阅读

GitHub

  繁體 雙語
Copy files and folders (part of the grunt-contrib collection).
  • 源代码名称:grunt-contrib-copy
  • 源代码网址:http://www.github.com/gruntjs/grunt-contrib-copy
  • grunt-contrib-copy源代码文档
  • grunt-contrib-copy源代码下载
  • Git URL:
    git://www.github.com/gruntjs/grunt-contrib-copy.git
    Git Clone代码到本地:
    git clone http://www.github.com/gruntjs/grunt-contrib-copy
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/gruntjs/grunt-contrib-copy
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    grunt-contrib-copy-v1.0.0

    复制文件和文件夹

    启动

    If之前,请务必先查看一下如何创建 Gruntfile插件,以及安装和使用Grunt插件。 熟悉该过程后,你可以使用以下命令安装这里插件:

    npm install grunt-contrib-copy --save-dev

    一旦安装了插件,就可以使用这一行的JavaScript启用 inside 你的Gruntfile:

    grunt.loadNpmTasks('grunt-contrib-copy');

    如果你仍然使用 Grunt v0.3,这个插件被设计为使用 Grunt. x.,强烈建议你升级,但是如果你不能使用 v0.3.2,则建议你升级。

    复制任务

    使用 grunt copy 命令运行这里任务。

    任务目标,文件和选项可以根据 grunt 配置任务指南指定。

    命令行选项

    进程

    类型:Function(content, srcpath)

    这里选项作为高级方法传递给 grunt.file.copy,以控制复制的文件内容。

    processContent 已经被重命名为 process,以后将删除选项 NAME。

    noProcess

    类型:String

    这里选项作为高级方法传递给 grunt.file.copy,以控制处理哪些文件内容。

    processContentExclude 已经被重命名为 noProcess,以后将删除选项 NAME。

    编码

    类型:String
    默认值:grunt.file.defaultEncoding

    要复制文件的文件编码。

    模式

    类型:Boolean 或者 String
    默认值:false

    是否复制或者设置目标文件和目录权限。 设置为 true 以复制现有文件和目录的权限。 或者设置为模式,i.e.: 复制文件的0644 将被设置为。

    时间戳

    类型:Boolean
    默认值:false

    复制文件时是否保留时间戳属性( atimemtime )。 设置为 true 以保留文件时间戳。 但时间戳不会在复制期间保存文件内容或者 NAME 时保存。

    用法示例

    copy: {
     main: {
     files: [
     // includes files within path {expand:true, src: ['path/*'], dest:'dest/', filter:'isFile'},
     // includes files within path and its sub-directories {expand:true, src: ['path/**'], dest:'dest/'},
     // makes all src relative to cwd {expand:true, cwd:'path/', src: ['**'], dest:'dest/'},
     // flattens results to a single level {expand:true, flatten:true, src: ['path/**'], dest:'dest/', filter:'isFile'},
     ],
     },
    },

    这里任务支持Grunt支持的所有文件映射格式。 请阅读模式build动态构建文件对象,以获得更多的细节。

    下面是一些附加示例,给出了以下文件树:

    $ tree -I node_modules.├── Gruntfile.js
    └── src
     ├── a
     └── subdir
     └── b
    2 directories, 3 files

    对单个文件树进行收费:

    copy: {
     main: {
     expand:true,
     src:'src/*',
     dest:'dest/',
     },
    },
    $ grunt copy
    Running "copy:main" (copy) task
    Created 1 directories, copied 1 files
    Done, without errors.
    $ tree -I node_modules.├── Gruntfile.js
    ├── dest
    │ └── src
    │ ├── a
    │ └── subdir
    └── src
     ├── a
     └── subdir
     └── b
    5 directories, 4 files

    没有完整路径的复制:

    copy: {
     main: {
     expand:true,
     cwd:'src',
     src:'**',
     dest:'dest/',
     },
    },
    $ grunt copy
    Running "copy:main" (copy) task
    Created 2 directories, copied 2 files
    Done, without errors.
    $ tree -I node_modules.├── Gruntfile.js
    ├── dest
    │ ├── a
    │ └── subdir
    │ └── b
    └── src
     ├── a
     └── subdir
     └── b
    5 directories, 5 files

    flatten filepath输出:

    copy: {
     main: {
     expand:true,
     cwd:'src/',
     src:'**',
     dest:'dest/',
     flatten:true,
     filter:'isFile',
     },
    },
    $ grunt copy
    Running "copy:main" (copy) task
    Copied 2 files
    Done, without errors.
    $ tree -I node_modules.├── Gruntfile.js
    ├── dest
    │ ├── a
    │ └── b
    └── src
     ├── a
     └── subdir
     └── b
    3 directories, 5 files

    复制和修改 file:

    若要在复制文件时更改它的内容,请按如下方式设置 options.process 函数:

    copy: {
     main: {
     src:'src/a',
     dest:'src/a.bak',
     options: {
     process:function (content, srcpath) {
     returncontent.replace(/[sad ]/g, '_');
     },
     },
     },
    },

    这里的所有字母"s"。"a"和"d"以及所有空间都将被更改为" a.bak"中的下划线。 当然,你不仅限于使用 正规表达式 替换。

    为了处理目录中的所有文件,process 函数的使用方式完全相同。

    注意:如果 process 无法正常工作,请注意它在v0.4.1和更早版本中被称为 processContent

    故障排除

    默认情况下,如果找不到文件或者目录,则将忽略该文件或者目录。 如果文件存在而不存在,则生成错误,然后添加 nonull:true。 例如这里 Gruntfile.js 条目:

    copy: {
     main: {
     nonull:true,
     src:'not-there',
     dest:'create-me',
     },
    },

    给出这里输出:

    $ grunt copy
    Running "copy:main" (copy) task
    Warning: Unable to read"not-there" file (Error code: ENOENT). Use --force to continue.
    Aborted due to warnings.

    发布历史

    • 添加使用 relative 路径的示例。 指向任务并删除 peerDeps。
    • mode 选项现在也适用于目录。 修复 Windows 上的路径问题。
    • 复制时保留文件时间戳。
    • processContent/processContentExclude 重命名为 process/noProcess 到 MATCH Grunt API。 复制现有或者设置文件权限的mode 选项。
    • 通过 --verbose 提供的单个事务输出。
    • 在开发中更改 grunt/gruntplugin依赖项从 tilde 版本范围到特定版本。
    • 转换为 grunt v0.4约定。 将 basePath 替换为 cwd。空目录支持。
    • 全局选项已经折旧。
    • 测试重构。

    Talkington 提交的任务

    :这里文件是在Thu年9 月9 日:2016: 09年生成的。


    文件  files  FOLD  cop  拷贝