--copy-ignored flag added to CLI (#10887)
* prevent ignored files in out dir * added includeIgnore cli option * Help text change * Update packages/babel-cli/src/babel/options.js Copy review. Co-Authored-By: Brian Ng <bng412@gmail.com> * review comments * throw error if copyIgnored is used without ignore flag * check for ignored files * duplicate pathToPattern fn in babel/cli * change implementation * removed ignore option from cliOption * added test case with ignore in config * added test case with ignore in config * review Co-authored-by: Brian Ng <bng412@gmail.com>
This commit is contained in:
committed by
Nicolò Ribaudo
parent
3af02f63de
commit
8415065d99
@@ -9,6 +9,13 @@ import fs from "fs";
|
||||
import * as util from "./util";
|
||||
import { type CmdOptions } from "./options";
|
||||
|
||||
const FILE_TYPE = Object.freeze({
|
||||
NON_COMPILABLE: "NON_COMPILABLE",
|
||||
COMPILED: "COMPILED",
|
||||
IGNORED: "IGNORED",
|
||||
ERR_COMPILATION: "ERR_COMPILATION",
|
||||
});
|
||||
|
||||
function outputFileSync(filePath: string, data: string | Buffer): void {
|
||||
makeDirSync(path.dirname(filePath));
|
||||
fs.writeFileSync(filePath, data);
|
||||
@@ -20,11 +27,14 @@ export default async function({
|
||||
}: CmdOptions): Promise<void> {
|
||||
const filenames = cliOptions.filenames;
|
||||
|
||||
async function write(src: string, base: string): Promise<boolean> {
|
||||
async function write(
|
||||
src: string,
|
||||
base: string,
|
||||
): Promise<$Keys<typeof FILE_TYPE>> {
|
||||
let relative = path.relative(base, src);
|
||||
|
||||
if (!util.isCompilableExtension(relative, cliOptions.extensions)) {
|
||||
return false;
|
||||
return FILE_TYPE.NON_COMPILABLE;
|
||||
}
|
||||
|
||||
relative = util.withExtension(
|
||||
@@ -47,7 +57,7 @@ export default async function({
|
||||
),
|
||||
);
|
||||
|
||||
if (!res) return false;
|
||||
if (!res) return FILE_TYPE.IGNORED;
|
||||
|
||||
// we've requested explicit sourcemaps to be written to disk
|
||||
if (
|
||||
@@ -68,11 +78,11 @@ export default async function({
|
||||
console.log(src + " -> " + dest);
|
||||
}
|
||||
|
||||
return true;
|
||||
return FILE_TYPE.COMPILED;
|
||||
} catch (err) {
|
||||
if (cliOptions.watch) {
|
||||
console.error(err);
|
||||
return false;
|
||||
return FILE_TYPE.ERR_COMPILATION;
|
||||
}
|
||||
|
||||
throw err;
|
||||
@@ -89,13 +99,16 @@ export default async function({
|
||||
async function handleFile(src: string, base: string): Promise<boolean> {
|
||||
const written = await write(src, base);
|
||||
|
||||
if (!written && cliOptions.copyFiles) {
|
||||
if (
|
||||
(cliOptions.copyFiles && written === FILE_TYPE.NON_COMPILABLE) ||
|
||||
(cliOptions.copyIgnored && written === FILE_TYPE.IGNORED)
|
||||
) {
|
||||
const filename = path.relative(base, src);
|
||||
const dest = getDest(filename, base);
|
||||
outputFileSync(dest, fs.readFileSync(src));
|
||||
util.chmod(src, dest);
|
||||
}
|
||||
return written;
|
||||
return written === FILE_TYPE.COMPILED;
|
||||
}
|
||||
|
||||
async function handle(filenameOrDir: string): Promise<number> {
|
||||
|
||||
@@ -165,6 +165,11 @@ commander.option(
|
||||
"Use a specific extension for the output files",
|
||||
);
|
||||
|
||||
commander.option(
|
||||
"--copy-ignored",
|
||||
"Include ignored files when copying non-compilable files.",
|
||||
);
|
||||
|
||||
commander.version(pkg.version + " (@babel/core " + version + ")");
|
||||
commander.usage("[options] <files ...>");
|
||||
// register an empty action handler so that commander.js can throw on
|
||||
@@ -315,6 +320,7 @@ export default function parseArgv(args: Array<string>): CmdOptions | null {
|
||||
quiet: opts.quiet,
|
||||
deleteDirOnStart: opts.deleteDirOnStart,
|
||||
sourceMapTarget: opts.sourceMapTarget,
|
||||
copyIgnored: opts.copyIgnored,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user