我在src目录中有一个具有嵌套文件结构的项目。直到现在,我还在使用babel --out-dir lib src。最近,我有了一个让用户直接使用单独文件的想法,所以基本上我想转换这个结构:
| src/
| a.js
| b.js
| c/
| d.js
| e/
| f.js这方面:
| lib/
| a.js
| b.js
| d.js
| f.js我已经尝试过babel --out-dir lib src/*、babel --out-dir lib src/**、babel --out-dir lib src/**/*.js,但它们都没有按预期工作--有些文件多次复制(一次在顶层,一次在子目录中)或仅在子目录中。
发布于 2016-12-21 02:10:24
不幸的是,它不能仅使用babel命令完成,因为babel没有任何类型的--no-recursive选项。
但是,如果您不害怕分号和find的自由使用,您可以在一行代码中这样做:
babel -d lib $(find src -type d); find lib/* -maxdepth 0 -type d | xargs rm -r在此之前:
$ tree src
src
├── a.js
├── b.js
└── c
├── d.js
└── e
└── f.js之后:
$ tree lib
lib
├── a.js
├── b.js
├── d.js
└── f.js发布于 2017-08-29 11:54:36
我刚刚发现了babel-cli的这个问题,它一直覆盖我源文件的内容。使用Node脚本解决:
const babel = require('babel-core');
const glob = require('glob');
const fs = require('fs');
// glob passes an array of path/filenames into callback as files
glob('./src/**/*.js', {}, (er, files) => {
// for each filename
files.forEach(file => {
// transform that filename, your presets/plugins may vary
babel.transformFile(file, {presets: ['es2015', 'es2017', 'stage-3'], babelrc: false}, (err, result) => {
if (!err) {
console.log(`${file} transpiled`);
// if it worked, write it to the new dir (in my case it's root)
fs.writeFileSync(`./${result.options.basename}.js`, result.code);
}
});
})
});依赖关系:
"devDependencies": {
"babel-core": "^6.26.0",
"babel-eslint": "7",
"babel-jest": "^20.0.3",
"babel-loader": "^6.2.4",
"babel-plugin-istanbul": "^4.1.4",
"babel-plugin-transform-es2015-modules-commonjs": "^6.16.0",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2017": "^6.9.2",
"babel-preset-stage-3": "^6.24.1",
"expect": "^1.20.2",
"glob": "^7.1.2",
"jest": "^20.0.4"
}https://stackoverflow.com/questions/41109437
复制相似问题