babeljs - Babel 输出路径维护输入路径的目录结构
问题描述
给定以下示例目录结构:
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
解决方案
所以我发现,如果你这样做了,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
文件夹User.js
,这使我相信第一级目录将被展平。
所以我把所有东西都放在一个server/src/
文件夹中,然后./server/
运行babel src/ -d ./build/
,现在它保留了我的目录结构。
-- server/
| build/
| apis/
| mainApi.js
| store/
| models/
| User.js
| index.js
|
| src/
| apis/
| mainApi.js
| store/
| models/
| User.js
| index.js
推荐阅读
- c# - 在 Unity 中使用持久性数据递增整数
- google-app-engine - 通过 Regex Google Datastore 查询实体
- python - 在浏览器中自动化计数机器人
- domain-driven-design - 追溯更新微服务数据库的方法
- calibre - 源中的 Calibre 服务器和 FB2 mime 类型
- java - 在recyclerview中,我如何让每个事件打开新的活动?
- symfony - 作曲家警告“包 zendframework/zend-code 被放弃”
- image - Flutter - 将资产图像转换和调整大小为 dart ui 图像
- android - 无法使用 Amplify for Android 成功生成模型文件
- python - 如何在 cx_Freeze 的多个文件夹中包含文件