[英]How do you keep the order of AngularJS files when transpiling with BabelJS
我已经开始尝试使用NPM脚本和BabelJS移植我的ES2015 AngularJS项目。 问题是连接顺序不正确,并导致nomod
错误。
给定此目录结构:
MyApp
+- src
| +- dashboard
| | +- search-bar
| | | +- search-bar.directive.js
| | | +- search-bar.service.js
| | | +- search-bar.spec.js
| | +- dashboard.module.js
+- dist
| +- js
| | +- dashboard.js
理想情况下, dashboard.module.js
应该是第一个文件,因为这是创建实际dashboard
模块的位置,然后是/search-bar
的所有内容,而实际上根本不需要任何顺序。 搜索栏是功能部件/组件,而不是新模块,并且是dashboard
一部分。
问题似乎在于,简单地运行BabelJS只会使用与文件系统相同的结构将所有文件连接在一起。
babel ./src/dashboard/**/*.js -o ./dist/js/dashboard.js
弄乱通配符以确保所有文件都被捕获时,还有一些奇怪的事情。
如何首先处理其他组件之前的dashboard.js
?
事实证明,您可以指定许多glob作为输入文件。
尝试使用以下命令:
babel ./src/dashboard/*.js ./src/dashboard/**/ -o ./dist/js/dashboard.js
这将首先处理/dashboard
内部紧随其后的所有.js
,再处理其余目录。
陷阱:只有在/dashboard
根目录中只有一个文件,这才真正起作用。 如果要添加dashboard.config.js
或任何其他文件,则将按该文件系统顺序处理这些文件。 不幸的是, dashboard.config.js
在dashboard.js
之前,因此您的问题将继续。 :(
另外,如果/dashboard
根目录中还有其他文件,或者不想包含其他类型的.js
,则需要忽略它们。
尝试:
babel ./src/dashboard/**/*.js ./src/dashboard/**/ --ignore *.spec.js --ignore *.conf.js -o ./dist/js/dashboard.js
这将使事情排在正确的顺序,并且还会跳过您可能放置在其中的所有karma.config.js
或search-bar.service.spec.js
文件。 我假设您不希望将那些实际用于生产中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.