打字稿打字文件没有被创建/复制
当我在命令行中我.js
,.map
和.d.ts
文件被创建运行tsc
:打字稿打字文件没有被创建/复制
C:\Users\{user}\Documents\My Projects\BEPS\angular2-soap>tsc -version
Version 1.8.10
...但是当我调用以下Gulp
功能一切作品除了未创建.d.ts
文件/复制到./app/
目录:
gulp.task('compile-typescript', function() {
var sourcemaps = require('gulp-sourcemaps');
var typescript = require('gulp-typescript');
var typescriptCompiler = typescript({typescript: require('typescript')});
var typescriptProject = typescript(typescript.createProject('tsconfig.json'));
var tsResults = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts'])
.pipe(typescriptProject)
.pipe(sourcemaps.init())
.pipe(sourcemaps.write('../map/'))
.pipe(gulp.dest('./app/'))
.pipe(typescriptCompiler).dts.pipe(gulp.dest('./app/'));
return tsResults;
});
片段从我package.json
文件:
"devDependencies": {
"autoprefixer": "6.3.6",
"concurrently": "2.0.0",
"cssnano": "3.5.2",
"del": "2.2.0",
"gulp": "3.9.1",
"gulp-ext-replace": "0.3.0",
"gulp-imagemin": "2.4.0",
"gulp-postcss": "6.1.0",
"gulp-sourcemaps": "1.6.0",
"gulp-typescript": "2.13.0",
"http-server": "0.9.0",
"jasmine-core": "2.4.1",
"karma": "0.13.22",
"karma-chrome-launcher": "0.2.3",
"karma-jasmine": "0.3.8",
"karma-spec-reporter": "0.0.26",
"lite-server": "2.2.0",
"postcss": "5.0.19",
"postcss-scss": "0.1.7",
"precss": "^1.3.0",
"run-sequence": "1.1.5",
"systemjs": "0.19.26",
"typescript": "latest",
"typings": "0.8.1"
},
我tsconfig.json
文件:
{
"compileOnSave": true,
"compilerOptions": {
"target": "ES5",
"module": "System",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": true,
"declaration": true,
"sourceMap": true,
"mapRoot": "map/",
"diagnostics": true
},
"exclude": [
"node_modules",
"typings"
]
}
我认为所有我需要做的是使用dts
管打字文件发送到./app/
我在想什么/做错了吗?谢谢!
试图从t34t5应用建议:
gulp.task('compile-typescript', function() {
var sourcemaps = require('gulp-sourcemaps');
var typescript = require('gulp-typescript');
var project = typescript.createProject('tsconfig.json', {declaration: true});
var merge = require('merge2');
var tsResults = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(typescript(project))
.pipe(sourcemaps.write('../map/'));
return merge([
tsResults.dts.pipe(gulp.dest('./app/')),
tsResults.js.pipe(gulp.dest('./app/'))
]);
});
我得到一个错误访问tsResults.dts
:
TypeError: Cannot read property 'pipe' of undefined
我的猜测是,sourcemaps
流是使用什么样的(不流typescript
)...这有意义吗?如果是的话,我能做些什么来解决它?
下生成两个.js
和.d.ts
文件 - 因为它没有试图也产生.map
文件:
gulp.task('compile-typescript', function() {
var typescript = require('gulp-typescript');
var project = typescript.createProject('tsconfig.json', {declaration: true});
var merge = require('merge2');
var tsResults = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts'])
.pipe(typescript(project));
return merge([
tsResults.dts.pipe(gulp.dest('./app/')),
tsResults.js.pipe(gulp.dest('./app/'))
]);
});
我认为你需要使用的东西,如合并写两个JS文件和类型定义文件。我可能是错的,但我相信流在你的第一个gulp.dest()之后关闭,所以没有任何东西通过dts管道发送。看看readme file吞噬打字稿。在基本使用部分下。
更新:我能够得到以下使用您的tsconfig文件工作。尽管我只使用单个打印源文件。这会生成.js,.d.ts和.map文件。
gulp.task('compile-typescript', function() {
var typescript = require('gulp-typescript');
var project = typescript.createProject('tsconfig.json', {declaration: true});
var merge = require('merge2');
var tsResults = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(typescript(project);
return merge([
tsResults.dts.pipe(gulp.dest('./app/')),
tsResults.js.pipe(sourcemaps.write('./app/')).pipe(gulp.dest('./app/'))
)]
});
I made尝试应用你的建议 - 但我得到一个错误 - “TypeError:无法读取属性'管'的undefined' ...我添加了我的新gulp函数到我的问题描述结束(上面) - 再次感谢 – Neoheurist
你应该有一个打字稿编译器,而不是两个。
var typescriptProject = typescript.createProject('tsconfig.json', {
typescript: require('typescript'),
declaration: true,
});
var tsResults = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts'])
.pipe(sourcemaps.init())
.pipe(typescript(typescriptProject))
.pipe(sourcemaps.write('../map/'))
.pipe(gulp.dest('./app/'));
谢谢,这简化了我的功能,但它仍然不会生成/写入任何'.d.ts'文件。 – Neoheurist
下实现了我寻求的效果 - 但它需要被编译.ts
源文件两次(一次生成.js
和.map
文件,一旦生成.d.ts
文件)
gulp.task('compile-typescript', function() {
var sourcemaps = require('gulp-sourcemaps');
var typescript = require('gulp-typescript');
var merge = require('merge2');
var src = gulp.src(['!./src/**/spec*.ts', './src/**/*.ts']);
var dst = gulp.dest('./app/');
var jsMap = src.pipe(typescript(typescript.createProject('tsconfig.json')))
.pipe(sourcemaps.init())
.pipe(sourcemaps.write('../map/'));
var dts = src.pipe(typescript(typescript.createProject('tsconfig.json')));
return merge([
jsMap.pipe(dst), // writes .js and .map files
dts.dts.pipe(dst) // writes .d.ts files
]);
});
由于冗余,我对此方法不满意 - 欢迎提供优化建议。
尝试在保存'tsResults'时删除sourcmaps.write,而是在'merge'调用'tsResults.js.pipe(sourcemaps.write())。pipe(gulp.dest())'中使用它。有很大的可能性,可能无法正常工作。我对吞咽不太熟悉。 –
我试过几种翻译'sourcemaps.init()'和'sourcemaps.write()'的顺序来无济于事......但'sourcemaps'似乎是干涉... – Neoheurist