copyfiles
模块提供了一些命令行选项,可以通过在命令行中传递参数来指定复制文件的相关配置,以下是常用的命令行选项:
-u, --up <n>
:在复制文件时,去掉路径中的前n
层目录。例如,如果指定-u 2
,则将src/a/b/c.js
复制到dist/b/c.js
。如果省略该选项,则不删除路径中的任何目录。-a, --all
:复制所有以点号(.)开头的文件和目录。默认情况下,以点号开头的文件和目录被视为隐藏文件和目录,不会被复制。-f, --flat
:将所有文件复制到输出目录的根目录下,而不保留子目录结构。-e, --exclude <pattern>
:排除与指定的 glob 模式匹配的文件或目录,可以指定多个-e
选项来排除多个模式。-E, --error
:如果没有任何文件被复制,则抛出错误,而不是输出一条警告信息。-V, --verbose
:在控制台中输出更多信息,例如复制的文件名和目标路径。-s, --soft
:如果目标文件已经存在,则不覆盖它,而是跳过该文件。-F, --follow
:复制符号链接指向的文件或目录,而不是符号链接本身。-v, --version
:输出模块的版本号。-h, --help
:输出模块的帮助信息。
copyfiles -u 2 -a -e "**/*.txt" -E -V -s src/**/* dist
const copyfiles = require('copyfiles');
const path = require('path');
const srcDir = path.resolve(__dirname, 'src');
const outDir = path.resolve(__dirname, 'dist');
copyfiles([
'-u', '2',
'-a',
'-e', '**/*.txt',
'-E',
'-V',
'-s',
`${srcDir}/**/*`,
outDir
], (err) => {
if (err) {
console.error(err);
} else {
console.log('Files copied successfully.');
}
});
const config = {
up: 2,
all: true,
exclude: '**/*.txt',
error: true,
verbose: true,
soft: true,
follow: false
};
copyFiles(['src/**/*', 'dist'], config, (err) => {
if (err) {
console.error(err);
} else {
console.log('Files copied successfully.');
}
});