我的项目结构如下:
-rw-r--r-- 1 chung2014 staff 2774 Nov 7 19:13 README.md
-rw-r--r-- 1 chung2014 staff 75 Nov 26 23:27 babel.config.js
drwxr-xr-x 588 chung2014 staff 18816 Nov 26 23:01 node_modules
-rw-r--r-- 1 chung2014 staff 781 Nov 26 22:25 nodemon.json
-rw-r--r-- 1 chung2014 staff 377691 Nov 26 22:08 package-lock.json
-rw-r--r-- 1 chung2014 staff 1551 Nov 26 23:27 package.json
-rw-r--r-- 1 chung2014 staff 2941 Nov 26 23:29 server.js
drwxr-xr-x 11 chung2014 staff 352 Nov 26 23:03 src
drwxr-xr-x 5 chung2014 staff 160 Nov 26 21:55 test
如果我在src
目录中拥有所有源代码(例如,也将server.js放入src
中),则我的package.json中可以有一个脚本babel src --out-dir dist/ --copy-files
将src
中的所有源代码编译到dist/
目录中。
但是,由于某些限制,我无法将server.js放在src
目录中。因此,当我尝试在package.json中包含脚本babel . --out-dir dist/ --copy-files
时,我让babel将node_modules
中的文件错误地复制到dist
中,这不是我想要的。
所以我的问题是,如何仅将文件从server.js
和src/
编译并复制到目标目录dist/
而不复制node_modules/
中的文件?
$ cat babel.config.js
const presets = [
"@babel/preset-env",
];
module.exports = { presets };
答案 0 :(得分:1)
执行此操作的唯一方法是放下--copy-files
并执行--ignore node_modules
,例如
babel . --out-dir dist/ --ignore node_modules
,您还希望忽略dist/
和babel.config.js
以及可能包含JS文件的根目录中的所有其他内容。
babel . --out-dir dist/ --ignore node_modules,dist,babel.config.js
实际上,更好的选择是让server.js
代理到dist
而不是代理,所以您可以这样做
babel src --out-dir dist/
,然后将server.js
移至src/server.js
。如果必须100%拥有server.js
,那么就让它require("./dist/server");
。
答案 1 :(得分:0)
创建如下脚本:
require('fs-extra').copy(
process.argv.slice(-2).shift(),
process.argv.slice(-2).pop(),
{ filter: (src,dist)=>{ return (src.match(/\.js|\.jsx|stories|test/)===null)} },
err => { if (err) return console.error (err); console.log ('Copy success!');
});
并将其附加到您的构建命令
&& ./scripts/--复制文件src dist / commonjs
要点:
https://gist.github.com/kmrk/bbc52a4d54b407398aff1695e5b710b7
答案 2 :(得分:0)
--no-copy-ignored
是一个新参数,它允许在复制文件时使用--ignore
的值。
示例:
babel src -d dist --ignore 'src/**/*.spec.js' --copy-files --no-copy-ignored
规范文件不会出现在输出目录中。
来源:https://github.com/babel/babel/issues/6226#issuecomment-590283042