[英]Why is typescript compiler changing my tsconfig.json file on server start up?
[英]TypeScript compiler ignores declaration file in tsconfig.json
我目前正在嘗試為打字稿的REST消費者設置一個開發環境,並遇到以下問題:編譯器在將它們放入.ts源文件時似乎會介意打字,但是當我嘗試時完全忽略它們通過tsconfig.json中的單個.d.ts文件管理我的refereneces。
我收到error TS2307: Cannot find module 'request'.
在嘗試編譯以下代碼時:
import * as request from 'request';
module HTTPClient {
...
}
這是我的tsconfig.json文件:
{
"compilerOptions": {
"jsx": "react",
"module": "commonjs",
"noImplicitAny": true,
"noEmitOnError": true,
"outDir": "./build/",
"preserveConstEnums": true,
"removeComments": true,
"target": "ES5",
"declarationFiles": true,
"moduleResolution": "classic"
},
"exclude": [
"./node_modules",
"./build",
"./tests"
],
"include": [
"./src/ts/**/*",
"./typings/main.d.ts"
]
}
這是我用來編譯和捆綁所有內容的gulp代碼:
var typescriptProject = typescriptCompiler.createProject(project['tsconfig'], { typescript: typescript });
gulp.task(
'compile-ts',
function () {
return gulp
.src([ project['ts'] + '**/*{ts, tsx}' ])
.pipe(typescriptCompiler(typescriptProject))
.js
.pipe(gulp.dest(output['js']));
}
);
gulp.task(
'bundle-js',
function () {
return browserify(output['js'] + 'main.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest(output['web']));
}
);
我在typings/main.d.ts
安裝並引用了Request的環境定義。 這可能與我使用browserify解析模塊的方式有關嗎? 任何幫助將非常感激。
問題是由兩件事引起的:
首先 ,如果您正在使用gulp-typescript首先編譯代碼,然后僅使用browserify捆綁它(不使用tsify),那么您可以選擇如何配置編譯器。 如果選擇使用tsconfig.json進行配置,首先需要使用gulp-typescript創建一個TypeScript Project對象,如下所示:
var typescriptCompiler = require('gulp-typescript');
var typescriptProject = typescriptCompiler.createProject(project['tsconfig'], { typescript: typescript });
然后將從項目中檢索到的源提供給gulp任務中的編譯器:
gulp.task(
'compile-ts',
function () {
return typescriptProject
.src()
.pipe(typescriptCompiler(typescriptProject))
.js
.pipe(gulp.dest(output['js']));
}
);
第二個問題是我在消息來源中包括“typings / main.d.ts”。 這導致了一大堆“TS2300:重復標識符”錯誤:解決這個問題只是將“typings / main.d.ts”移到“排除”部分以避免重復。
注意:打字版本確實已經過時了; 如果您遇到此問題,請更新它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.