grunt-init:如何复制或创建空目录?

时间:2013-03-13 17:36:22

标签: javascript node.js gruntjs

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

我在'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。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

试着看看这个this article

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

var root = path.normalize(__dirname+"/relative/path/you/want");
grunt.file.mkdir(root);
但是,阅读整篇文章可能会很好。

答案 2 :(得分:0)

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

  1. 通过迭代 init.filesToCopy(props) 返回的文件对象,存储与我们的( __ empty_file.txt )匹配的文件阵列。
  2. 使用 grunt.file.mkdir 为上述数组中的每个项目创建目录,并从 init.filesToCopy 返回的文件引用中删除此文件。必须在调用 init.copyAndProcess
  3. 之前调用此方法