3

我想将一个空目录从我的根文件夹复制到新的初始化项目中。我想这样做,为新项目提供初始目录结构。

我在文件夹“my-template/root/”中有这样的空目录,但不会被复制:

    // Files to copy (and process).
    var files = init.filesToCopy(props);

    // Actually copy (and process) files.
    init.copyAndProcess(files, props);

我试过这个:

    // to copy also the empty directories
    init.copy('myDir1/');
    init.copy('myDir2/');

但比 grunt-init 崩溃:

Error: Unable to read "grunt-init-example/root/myDir1/" file (Error code: EISDIR).

我该怎么做才能获得一个空目录到目标文件夹?

我使用 grunt@0.4.0 和 grunt-init@0.2.0。

4

3 回答 3

3

受 Nick Mitchinson 的回答启发,我使用了这个解决方法:

// module dependencies
var join = require("path").join;
// empty directories will not be copied, so we need to create them manual
grunt.file.mkdir( join(init.destpath(), 'myDir1') );
grunt.file.mkdir( join(init.destpath(), 'myDir2') );

更新:

替代解决方案是将.gitkeep文件添加到空目录。目录不再为空,并将与 filesToCopy() 一起列出。

有关.gitkeep查看此处的更多详细信息:https ://stackoverflow.com/a/7229996/496587

于 2013-03-14T08:34:21.413 回答
2

试着看看这篇文章

与创建目录相关的部分是:

var root = path.normalize(__dirname+"/relative/path/you/want");
grunt.file.mkdir(root);

但是,阅读整个这可能会很好。

于 2013-03-13T17:53:04.550 回答
0

我在要复制的空文件夹中创建了一个空的__empty_file.txt文件。在我的 template.js 文件中,我执行以下操作:

  1. 通过将init.filesToCopy(props)返回的文件对象迭代到数组来存储与我们的 ( __empty_file.txt ) 匹配的文件。
  2. 使用grunt.file.mkdir为上述数组中的每个项目创建目录,并从init.filesToCopy返回的文件引用中删除此文件。这必须在调用init.copyAndProcess之前调用。
于 2013-11-25T01:46:06.253 回答