Все строковые данные должны кодироваться в кодировке UTF-8.
$out = array(
'render' => utf8_encode($renderOutput),
'text' => utf8_encode($textOutput)
);
$out = json_encode($out);
die($out);
Установка необходимых npm
пакетов
npm install typescript
npm install gulp@^4.0.0
npm install gulp-typescript@^5.0.0
npm install del
npm install ts-nameof
gulp-typescript
БЕЗ проекта Подготовка gulpfile.js
const gulp = require('gulp');
const ts = require('gulp-typescript');
const tsNameof = require("ts-nameof");
const del = require('del');
gulp.task('clean', () => {
return del(['./dist/**']);
});
gulp.task('ts', function () {
return gulp.src('./src/**/*.ts')
.pipe(ts({
getCustomTransformers: () => ({ before: [tsNameof] })
}))
.pipe(gulp.dest('./dist'));
});
gulp.task('default',
gulp.series(
'clean',
'ts',
));
gulp-typescript
С проектом, использующим существующее tsconfig.json
Используя gulp-typescript
с существующим tsconfig.json
, необходимо настроить gulpfile.js
там, где настроена опция getCustomTransformers
:
Подготовка gulpfile.js
const gulp = require('gulp');
const ts = require('gulp-typescript');
const tsNameof = require("ts-nameof");
const del = require('del');
gulp.task('clean', () => {
return del(['./dist/**']);
});
var tsProject = tsProject || null;
gulp.task('ts::Project', function () {
if (!tsProject) {
tsProject = ts.createProject(
'tsconfig.json',
{
getCustomTransformers: () => ({ before: [tsNameof] })
}
);
}
return gulp.src('./src/**/*.ts')
.pipe(tsProject())
.pipe(gulp.dest("./dist"));
});
gulp.task('tsProject',
gulp.series(
'clean',
'ts::Project',
));
Выполнить gulpfile.js
с
./node_modules/.bin/gulp
или
./node_modules/.bin/gulp tsProject
Выполнить переданный файл tsNameofTest.js
node dist/tsNameofTest.js // expected output: nameString: log
Примечание: если цель typescript
равна ESNext
, я получил ошибки выполнения со следующим оператором в файле .ts
, как это было в финале Файл .js
тоже:
import 'ts-nameof';
Я получил исправлено, заменив его на
/// <reference path="../node_modules/ts-nameof/ts-nameof.d.ts" />
Теперь даже можно установить определение типа из ts-nameof
во всем мире:
npm install @types/ts-nameof --save-dev
Ни import
, ни /// <reference path="" />
не является необходимым.