使用Yarn Berry与TS路径别名时,如何给typeorm-ts-node-commonjs传递tsconfig-paths/register
使用
typeorm-ts-node-commonjs时传递tsconfig-paths/register给ts-node的方法 下面是几种可行的解决方案:
方法1:通过环境变量TS_NODE_OPTIONS传递参数
typeorm-ts-node-commonjs底层基于ts-node运行,所以可以用TS_NODE_OPTIONS环境变量给ts-node注入注册模块:
TS_NODE_OPTIONS="-r tsconfig-paths/register" yarn typeorm-ts-node-commonjs <你的TypeORM命令,比如migrate:run>
如果需要指定数据源文件,加上-d参数即可:
TS_NODE_OPTIONS="-r tsconfig-paths/register" yarn typeorm-ts-node-commonjs -d ./src/data-source.ts migrate:run
方法2:手动调用ts-node执行TypeORM CLI
直接绕开预构建命令,手动用ts-node加载tsconfig-paths/register并执行TypeORM的CLI入口文件:
ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js -d ./src/data-source.ts <你的命令>
方法3:在package.json中配置脚本(推荐)
把命令封装到package.json的scripts里,避免每次输入长命令:
{ "scripts": { "typeorm": "TS_NODE_OPTIONS=\"-r tsconfig-paths/register\" typeorm-ts-node-commonjs -d ./src/data-source.ts" } }
之后直接通过以下方式执行TypeORM命令:
yarn typeorm migrate:run # 或者其他命令,比如 yarn typeorm schema:drop
为什么之前的尝试失败?
yarn typeorm-ts-node-commonjs -r tsconfig-paths/register无效:因为-r是ts-node的参数,不是typeorm-ts-node-commonjs这个预构建命令的参数,该命令只接受TypeORM CLI的参数。ts-node -r tsconfig-paths/register typeorm-ts-node-commonjs无效:因为typeorm-ts-node-commonjs是一个npm脚本,不是可直接被ts-node执行的文件,必须指向TypeORM的CLI入口文件。
内容的提问来源于stack exchange,提问作者coler-j
相关产品推荐
相关产品推荐

