Javascript 在TypeScript中,在构建dist文件夹时,使模块别名工作的正确配置是什么?
我曾在typescript的模块别名上进行过实验,它在Javascript 在TypeScript中,在构建dist文件夹时,使模块别名工作的正确配置是什么?,javascript,node.js,typescript,Javascript,Node.js,Typescript,我曾在typescript的模块别名上进行过实验,它在dev期间工作,但当我尝试构建它时,总是找不到模块,因为即使在构建时它也指向src文件 我尝试将package.json中的dist替换为moduleAlias。但是,当我运行warn run dev时,它使用的是dist文件夹源代码,而不是我的src。我还尝试将tsconfig路径引入我的dev例如“dev”:“NODE\u ENV=development ts NODE-r tsconfig path/register./src/inde
dev
期间工作,但当我尝试构建它时,总是找不到模块,因为即使在构建时它也指向src
文件
我尝试将package.json中的dist
替换为moduleAlias
。但是,当我运行warn run dev
时,它使用的是dist
文件夹源代码,而不是我的src
。我还尝试将tsconfig路径
引入我的dev
例如“dev”:“NODE\u ENV=development ts NODE-r tsconfig path/register./src/index.ts”
,但系统仍在读取模块偏差
。也许这里有人在执行模块路径时遇到了类似的问题
以下是我的项目结构:
|-project
|---src
|-------index.ts // (where I put require('module-alias/register');)
|-------app (business logic) // where I start using modules e.g import config from '@config/index.config';
|-----------index.ts
|-----------routes
|-------config
|---dist
|---node_modules
|---.env
|---.eslintrc
|---package.json
|---tsconfig.json
|---yarn.lock
mypackage.json的片段
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"dev": "NODE_ENV=development ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "yarn run build && node -r ./dist/index.js",
"build": "NODE_ENV=production yarn run build-ts",
"build-ts": "tsc -p .",
},
"_moduleAliases": {
"@config": "./src/config",
"@routes": "./src/app/routes",
},
{
"compilerOptions": {
"incremental": true,
"target": "es6",
"module": "commonjs",
"declaration": true,
"sourceMap": true,
"outDir": "./dist",
"removeComments": true,
"strict": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noUnusedLocals": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"suppressImplicitAnyIndexErrors": true,
"moduleResolution": "node",
"baseUrl": "./src",
"paths": {
"@config/*": ["config/*"],
"@routes/*": ["app/routes/*"],
},
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
Mytsconfig.json
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"dev": "NODE_ENV=development ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "yarn run build && node -r ./dist/index.js",
"build": "NODE_ENV=production yarn run build-ts",
"build-ts": "tsc -p .",
},
"_moduleAliases": {
"@config": "./src/config",
"@routes": "./src/app/routes",
},
{
"compilerOptions": {
"incremental": true,
"target": "es6",
"module": "commonjs",
"declaration": true,
"sourceMap": true,
"outDir": "./dist",
"removeComments": true,
"strict": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noUnusedLocals": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"suppressImplicitAnyIndexErrors": true,
"moduleResolution": "node",
"baseUrl": "./src",
"paths": {
"@config/*": ["config/*"],
"@routes/*": ["app/routes/*"],
},
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
My.eslintrc
(不确定它是否与此问题有关)
我如何使用它
import config from '@config/index.config';
非常感谢。我在github上打开的一个问题已经解决了这个问题:)