在 VS Code 中按扩展名复制文件 tasks.json
Copy files by extension in VS Code tasks.json
我想以递归方式将 /src 中扩展名为 .json 的所有文件复制到我的 /out 目录中。我目前像这样复制静态文件夹中的所有文件(无论扩展名如何),在 tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "copyStatic",
"command" : "cp",
"args": ["-f", "-r", "${workspaceFolder}/src/static", "${workspaceFolder}/out/"],
}
]
}
我尝试使用我在其他地方看到的 /**/ 符号,就像这样
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "copyJson",
"command" : "cp",
"args": ["-f", "-r", "${workspaceFolder}/src/**/*.json", "${workspaceFolder}/out/"],
}
]
}
但是没有用 - 出现错误 cp: /src/**/*.json: No such file or directory
知道如何在 tasks.json 中执行此操作吗?我想深拷贝所以包括像
这样的文件
/src/foo.json --> /out/foo.json
/src/folder/bar.json --> /out/folder/bar.json
谢谢
使用 cp
可能很难实现复杂的查询。幸运的是,find
默认情况下递归搜索,并且可以与 -exec cp
结合使用以实际复制这些文件。
以下命令可以解决问题:
"command" : "find src/ -name "*.json" -exec cp {} out/ \;"
一个gulp
解决方案很简单:
const gulp = require("gulp");
function copyJSONFiles() {
return gulp.src('src/**/*.json') // get all the json files from 'src' directory
.pipe(gulp.dest('out')); // move them to the workspace/out directory
}
exports.default = copyJSONFiles;
// /src/foo.json --> /out/foo.json
// /src/folder/bar.json --> /out/folder/bar.json
这个名为 gulpfile.js
的文件位于顶层的工作区文件夹中。它仅通过终端中的 gulp
命令触发。
将创建 out
文件夹,src
下的文件夹结构将保留在其中。
正如我在 10 月 13 日的评论中所说的那样
"command" : "find ./async -name '*.json' -exec cp --parents {} out/ ';'",
将保留 src 目录(此处 async
)的文件夹结构,但不幸的是在 out/async
下。这就是 --parents
选项的目的。
但是,不使用 --parents
选项会导致只有 json 个文件的平面文件夹,这似乎不是您想要的。
可能有一个纯脚本版本,它会展平该父文件夹,删除其中的 src
文件夹。但是 gulp 版本非常简单。
我想以递归方式将 /src 中扩展名为 .json 的所有文件复制到我的 /out 目录中。我目前像这样复制静态文件夹中的所有文件(无论扩展名如何),在 tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "copyStatic",
"command" : "cp",
"args": ["-f", "-r", "${workspaceFolder}/src/static", "${workspaceFolder}/out/"],
}
]
}
我尝试使用我在其他地方看到的 /**/ 符号,就像这样
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "copyJson",
"command" : "cp",
"args": ["-f", "-r", "${workspaceFolder}/src/**/*.json", "${workspaceFolder}/out/"],
}
]
}
但是没有用 - 出现错误 cp: /src/**/*.json: No such file or directory
知道如何在 tasks.json 中执行此操作吗?我想深拷贝所以包括像
这样的文件/src/foo.json --> /out/foo.json
/src/folder/bar.json --> /out/folder/bar.json
谢谢
使用 cp
可能很难实现复杂的查询。幸运的是,find
默认情况下递归搜索,并且可以与 -exec cp
结合使用以实际复制这些文件。
以下命令可以解决问题:
"command" : "find src/ -name "*.json" -exec cp {} out/ \;"
一个gulp
解决方案很简单:
const gulp = require("gulp");
function copyJSONFiles() {
return gulp.src('src/**/*.json') // get all the json files from 'src' directory
.pipe(gulp.dest('out')); // move them to the workspace/out directory
}
exports.default = copyJSONFiles;
// /src/foo.json --> /out/foo.json
// /src/folder/bar.json --> /out/folder/bar.json
这个名为 gulpfile.js
的文件位于顶层的工作区文件夹中。它仅通过终端中的 gulp
命令触发。
将创建 out
文件夹,src
下的文件夹结构将保留在其中。
正如我在 10 月 13 日的评论中所说的那样
"command" : "find ./async -name '*.json' -exec cp --parents {} out/ ';'",
将保留 src 目录(此处 async
)的文件夹结构,但不幸的是在 out/async
下。这就是 --parents
选项的目的。
但是,不使用 --parents
选项会导致只有 json 个文件的平面文件夹,这似乎不是您想要的。
可能有一个纯脚本版本,它会展平该父文件夹,删除其中的 src
文件夹。但是 gulp 版本非常简单。