gpt4 book ai didi

typescript - 如何为浏览器用户 gulp 和 tsproject 捆绑 typescript 文件?

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:32 24 4
gpt4 key购买 nike

我是前端开发的新手,长期从事后端 C# 和 Java 开发,我正在努力掌握如何构建前端应用程序。我想使用 typescript 构建一个应用程序,并使用 gulp 作为我的构建管道,将我的代码转换、捆绑和缩小到单个 JavaScript 文件。

为此,我一直在查看节点模块 tsproject据我所知,它应该完全按照我的意愿行事。除了,我无法让它做我想做的事:-(。

这是我的 gulpfile.js 的相关部分:

var gulp = require('gulp');
var clean = require('gulp-clean');
var tsproject = require('tsproject');

gulp.task('default', [ 'min-js' ]);

gulp.task('clean', function () {
return gulp
.src('./dist/', { read: false })
.pipe(clean());
});

gulp.task('min-js', [ 'clean' ], function () {
return tsproject
.src('./tsconfig.json')
.pipe(gulp.dest('./dist/js'))
});

还有我的 tsconfig.json:

{
"compilerOptions": {
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"jsx": "react",
"outDir": "./"
},
"files": [
"./src/**/*.tsx",
"./src/**/*.ts"
],
"bundles": {
"myApp": {
"files": [
"./src/App.tsx"
],
"config": {
"minify": true,
"sourcemap": true
}
}
}
}

我原以为这会输出一个包含转译、捆绑和缩小的 JavaScript 代码的 js 文件,但我得到的是一个捆绑(未转译或缩小)的 Typescript 文件 (./dist/js/myApp.min.ts) .

我是做错了什么还是完全误解了 tsproject 的目的和意图?

最佳答案

好吧,我不确定这是否是最好的方法,但我终于得到了像这样的 gulpfile 的工作方式:

var gulp = require('gulp');
var browserify = require('gulp-browserify');
var clean = require('gulp-clean');
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');
var ts = require('gulp-typescript');
var uglify = require('gulp-uglify');

gulp.task('default', [ 'min-js' ]);

gulp.task('clean', function () {
return gulp
.src([
'./tmp/',
'./dist/'
], { read: false })
.pipe(clean());
});

gulp.task('transpile-ts', ['clean'], function () {
var tsproject = ts.createProject('./src/tsconfig.json');
return tsproject
.src()
.pipe(sourcemaps.init())
.pipe(tsproject()).js
.pipe(sourcemaps.write('./sourcemaps'))
.pipe(gulp.dest('./tmp/js'));
});

gulp.task('min-js', [ 'transpile-ts' ], function () {
return gulp
.src('./tmp/js/App.js')
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(browserify())
.pipe(uglify())
.pipe(concat('App.min.js'))
.pipe(sourcemaps.write('./sourcemaps'))
.pipe(gulp.dest('./dist/js'))
});

基本上,我将所有 TypeScript 文件转换为 Javascript,并将 CommonJS 导入到一个临时目录。然后我使用 Browserify 将 JavaScript 文件捆绑(即解析 CommonJS 导入)到一个文件中。最后我缩小了生成的 JavaScript 文件。瞧!

出于某种原因,我必须先将转译后的文件写入一个临时目录,然后将这些文件打包并缩小。而不是继续将 pipe(tsproject()) 的结果通过管道传输到 browserify()...

关于typescript - 如何为浏览器用户 gulp 和 tsproject 捆绑 typescript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40823462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com