这是我的项目结构:
cloudRun
distApp // TRANSPILED APP FILES FROM ./src
distService // TRANSPILED BACKEND FILES FROM ./cloudRun/src
src // SOURCE FILES FOR THE BACKEND CODE
index.js // INDEX.JS FOR THE BACKEND CODE
babel.config.js // CONFIG FOR THE BABEL TRANSPILE SCRIPT
src // SOURCE FILES FOR THE APP
index.js // INDEX.JS FOR THE APP CODE
package.json // THIS IS THE MAIN PROJECT package.json
我会尽量简洁明了。
在index.js
(应用程序和后端代码)中,我都在源代码中使用路径别名。
例如:
./src/some-folder/some-file.js
import xxx from "@src/hooks/someHoot";
// IN THE TRANSPILED VERSION @src MUST BE CONVERTED TO ./cloudRun/distApp
还有,例如:
./cloudRun/src/some-folder/some-file.js
import xxx from "@src/hooks/someHoot";
// IN THE TRANSPILED VERSION @src MUST BE CONVERTED TO ./cloudRun/distApp
但不知何故,我在配置时遇到了module-resolver
麻烦babel.config.js
。要么我让它与存在的路径别名一起正常工作./src
(并且路径别名在./cloudRun/src
1 级上都是错误的),反之亦然。
例如:
.cloudRun/babel.config.js
plugins = [
["module-resolver", {
"alias": {
"@src" : "./distApp",
"@hooks" : "./distApp/hooks",
}
}]
];
这适用于./src
文件。但是来自./cloudRun/src
1 级的文件都是错误的。
如果我改成这样:
.cloudRun/babel.config.js
plugins = [
["module-resolver", {
"alias": {
"@src" : "./cloudRun/distApp",
"@hooks" : "./cloudRun/distApp/hooks",
}
}]
];
然后它适用于./cloudRun/src
文件。但是来自的所有文件./src
都会错误 1 级。
我在想我可以使用模块解析器配置"root"
中的选项来解决这个问题。但我还不能让它工作。
也许是这样的:
.cloudRun/babel.config.js
plugins = [
["module-resolver", {
"root": ["./cloudRun"], // SET A NEW ROOT HERE
"alias": {
"@src" : "./distApp",
"@hooks" : "./distApp/hooks",
}
}]
];
我在"root"
配置中尝试了很多东西。但到目前为止,它似乎没有任何区别。
这是我运行 babel 的方式:
// SCRIPTS FROM ./package.json
babel src --out-dir cloudRun/distApp --config-file ./cloudRun/babel.config.js
babel cloudRun/src --out-dir cloudRun/distService --config-file ./cloudRun/babel.config.js