通天塔。 --copy-files错误地复制了node_modules

时间:2018-11-26 15:51:45

标签: babeljs

我的项目结构如下:

-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-filessrc中的所有源代码编译到dist/目录中。

但是,由于某些限制,我无法将server.js放在src目录中。因此,当我尝试在package.json中包含脚本babel . --out-dir dist/ --copy-files时,我让babel将node_modules中的文件错误地复制到dist中,这不是我想要的。

所以我的问题是,如何仅将文件从server.jssrc/编译并复制到目标目录dist/而不复制node_modules/中的文件?

$ cat babel.config.js 

const presets = [
  "@babel/preset-env",
];

module.exports = { presets };

3 个答案:

答案 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