Búsqueda de sitios web

tsconfig - TypeScript: Cómo importar desde la carpeta superior cuando la compilación añade profundidad a la estructura del proyecto


La estructura de mi proyecto es la siguiente

dist
  |- src
  |   |- s.js
  |- test
      |- t.js
node_modules
results
  |- r.json
src
  |- s.ts
test
  |- t.ts
tsconfig.json
typings.d.ts

s.ts importa r.json de la siguiente manera:

import * as results from '../results/r.json';

Obviamente, esto no funciona después de la compilación ya que results ahora está dos carpetas arriba...

¿Cuál es el enfoque adecuado para solucionar esto? A continuación se muestra mi tsconfig.json

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "inlineSourceMap": true,
    "lib": [
      "dom",
      "es2015"
    ],
    "moduleResolution": "node",
    "outDir": "dist/",
    "target": "es5",
    "typeRoots": [
      "node_modules/@types",
      "./typings.d.ts"
    ]
  },
  "include": [
    "src/**/*.ts",
    "results/r.json",
    "test/**/*.ts",
    "./typings.d.ts"
  ],
  "exclude": [
    "node_modules"
  ],
  "compileOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

Respuesta #1

La mejor manera es evitar esto por completo. Trata de hacer que el nivel de profundidad coincida.

p. ej.:

root
  dist-es5
    index.ts
    index.spec.ts
  src
    index.ts
    index.spec.ts

En cuanto a mantener el código de prueba/especificación fuera de lo distribuido, puedes tener múltiples tsconfig.json, por ejemplo, puedes echar un vistazo a: Configuración de tsconfig con la carpeta de espec/prueba