Babel输出路径可维护输入路径的目录结构

时间:2019-04-12 03:01:30

标签: babeljs babel-cli output-directory

给出以下示例目录结构:

srcDir/file1.js
srcDir/subDir1/file2.js
srcDir/subDir2/file3.js

我想用babel-cli处理这些文件,以便输出文件以相同的相对目录结构结尾在destDir中。

也就是说:

destDir/file1.js
destDir/subDir1/file2.js
destDir/subDir2/file3.js

我不想处理srcDir中的所有文件,只是其中一些文件。

我想我必须指定一个输入目录,一个文件路径列表和一个输出目录。
但是Babel的命令行帮助没有说明如何做。

Usage: babel [options] <files ...>

Options:
  -f, --filename [filename]                   filename to use when reading from stdin - this will be used in source-maps, errors etc
  --presets [list]                            comma-separated list of preset names
  --plugins [list]                            comma-separated list of plugin names
  --config-file [path]                        Path to a .babelrc file to use
  --env-name [name]                           The name of the 'env' to use when loading configs and plugins. Defaults to the value of BABEL_ENV, or else NODE_ENV, or else 'development'.
  --root-mode [mode]                          The project-root resolution mode. One of 'root' (the default), 'upward', or 'upward-optional'.
  --source-type [script|module]
  --no-babelrc                                Whether or not to look up .babelrc and .babelignore files
  --ignore [list]                             list of glob paths to **not** compile
  --only [list]                               list of glob paths to **only** compile
  --no-highlight-code                         enable/disable ANSI syntax highlighting of code frames (on by default)
  --no-comments                               write comments to generated output (true by default)
  --retain-lines                              retain line numbers - will result in really ugly code
  --compact [true|false|auto]                 do not include superfluous whitespace characters and line terminators
  --minified                                  save as much bytes when printing [true|false]
  --auxiliary-comment-before [string]         print a comment before any injected non-user code
  --auxiliary-comment-after [string]          print a comment after any injected non-user code
  -s, --source-maps [true|false|inline|both]
  --source-map-target [string]                set `file` on returned source map
  --source-file-name [string]                 set `sources[0]` on returned source map
  --source-root [filename]                    the root from which all sources are relative
  --module-root [filename]                    optional prefix for the AMD module formatter that will be prepend to the filename on module definitions
  -M, --module-ids                            insert an explicit id for modules
  --module-id [string]                        specify a custom name for module ids
  -x, --extensions [extensions]               List of extensions to compile when a directory has been input [.es6,.js,.es,.jsx,.mjs]
  --keep-file-extension                       Preserve the file extensions of the input files
  -w, --watch                                 Recompile files on changes
  --skip-initial-build                        Do not compile files before watching
  -o, --out-file [out]                        Compile all input files into a single file
  -d, --out-dir [out]                         Compile an input directory of modules into an output directory
  --relative                                  Compile into an output directory relative to input directory or file. Requires --out-dir [out]
  -D, --copy-files                            When compiling a directory copy over non-compilable files
  --include-dotfiles                          Include dotfiles when compiling and copying non-compilable files
  --verbose                                   Log everything
  --delete-dir-on-start                       Delete the out directory before compilation
  -V, --version                               output the version number
  -h, --help                                  output usage information

1 个答案:

答案 0 :(得分:2)

所以我发现,如果您执行babel * -d ./build/,它将使所有第一级目录变平。

所以我有

-- server/
 |  apis/
 |    mainApi.js
 |  store/
 |    models/
 |      User.js
 |  index.js

./server目录运行了babel * -d ./build/,我得到了:

-- server/
 |  build/
 |    models/
 |      User.js
 |    index.js
 |    mainApi.js
 |  apis/
 |    mainApi.js
 |  store/
 |    models/
 |      User.js
 |  index.js

输出被展平,但是仍然存在一个models的{​​{1}}文件夹,这使我相信第一级目录将被展平。

因此,我将所有内容放入User.js文件夹中,并从server/src/运行./server/,现在它保留了我的目录结构。

babel src/ -d ./build/