gpt4 book ai didi

javascript - 使用 gulp 访问 typescript 文件变量值

转载 作者:行者123 更新时间:2023-12-03 07:04:55 26 4
gpt4 key购买 nike

我有几个 typescript 文件,其中一些导出名为 APIS 的 const。

我正在尝试访问这些导出(我想将它们全部连接到一个文件中),但它似乎不起作用。我显然做错了什么,但我不确定是什么。

例如,我有一个名为 services 的文件夹,其中有 2 个文件:service1.ts、service2.ts。

service1.ts:

...
export const APIS = [ { "field1" : "blabla" } ];

service2.ts:不包含APIS变量。

这是我的 gulpfile.js:

var gulp = require('gulp');
var concat = require('gulp-concat');
var map = require('gulp-map');

gulp.task('default', function() {
return gulp.src('.../services/*.ts')
.pipe(map(function(file) {
return file.APIS;
}))
.pipe(concat('all.js'))
.pipe(gulp.dest('./test/'));
});

当我运行这个任务时,我什么也没得到。当我将 console.log(file.APIS); 添加到映射函数时,我得到所有值的 undefined (尽管它是在 service1.ts 中定义的!)。

这如下:Extracting typescript exports to json file using gulp

编辑:好的,所以我尝试将导出保存在 .js 文件而不是 .ts 文件中,现在我可以使用 require 访问这些变量:

gulp.task('默认', function() {

  return gulp.src('./**/*.service.export.js')
.pipe(map(function(file) {
var fileObj = require(file.path);
...
}))

现在,如果我尝试 console.log(fileObj.APIS); 我会得到正确的值。我仍然困惑的是如何传递这些值,并从所有这些变量中创建一个文件。是否可以将它们插入数组中?

最佳答案

这不会像你想象的那样工作。 Gulp 本身对 typescript 文件一无所知,该文件是 vinyl-file并且不了解其内容中的 typescript 代码。

编辑

根据您的示例,您可以执行以下操作:

var gulp = require('gulp');
var concat = require('gulp-concat');
var map = require('gulp-map');
var fs = require('fs');

gulp.task('test', function ()
{
var allConstants = [];
var stream = gulp.src('./**/*.service.export.js')
.pipe(map(function(file)
{
var obj = require(file.path);
if (obj.APIS != null)
allConstants = allConstants.concat(obj.APIS);
return file;
}));

stream.on("end", function (cb)
{
// Do your own formatting here
var content = allConstants.map(function (constants)
{
return Object.keys(constants).reduce(function (aggregatedString, key)
{
return aggregatedString + key + " : " + constants[key];
}, "");
}).join(", ");

fs.writeFile('filename.txt', content, cb);
});
return stream;
});

关于javascript - 使用 gulp 访问 typescript 文件变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36868988/

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