Чтобы исправить это, вы можете прекратить использовать exports.HelloWorld
с require("./helloworld")
и начать использовать gulp
, gulp-concat
, gulp-typescript
с /// <reference path=
включает:
packages.json
{
"scripts": {
"gulp": "gulp main"
},
"dependencies": {
"@types/gulp": "^4.0.6",
"@types/gulp-concat",
"@types/gulp-typescript",
"gulp": "^4.0.2",
"gulp-concat": "^2.6.1",
"gulp-resolve-dependencies": "^3.0.1",
"gulp-typescript": "^6.0.0-alpha.1",
"typescript": "^3.7.3"
}
}
src/someimport.ts
class SomeClass {
delay: number;
}
источник/main.ts
/// <reference path="./someimport.ts" />
someclass = new SomeClass();
someclass.delay = 1;
Эта задача main
gulp (на gulpfile.js
) нацелена только на файл src/main.js
, разрешая все его ссылки /// <reference path=...
include. Эти включения известны как Triple-Slash Directives
и используются только для инструментов транспилеров для объединения файлов. В нашем случае они явно используются .pipe(resolveDependencies({
и самим typescript при проверке файла на наличие отсутствующих типов, переменных и т.д.
- https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html
- Когда мне нужна ссылка с тройной косой чертой?
См. https://github.com/ivogabe/gulp-typescript#api-overview, если вы хотите настроить вызов var tsProject = ts.createProject
, а не использовать файл tsconfig.json
или переопределить его параметры.
gulpfile.js
var gulp = require("gulp");
var concat = require('gulp-concat');
var resolveDependencies = require('gulp-resolve-dependencies');
var ts = require("gulp-typescript");
var tsProject = ts.createProject("tsconfig.json");
gulp.task("main", function() {
return gulp
.src(["src/main.ts"])
.pipe(resolveDependencies({
pattern: /^\s*\/\/\/\s*<\s*reference\s*path\s*=\s*(?:"|')([^'"\n]+)/gm
}))
.on('error', function(err) {
console.log(err.message);
})
.pipe(tsProject())
.pipe(concat('main.js'))
.pipe(gulp.dest("build/"));
});
Если вы хотите настроить таргетинг на все файлы вашего проекта type script, а не только на src/main.ts
, вы можете заменить это:
return gulp
.src(["src/main.ts"])
.pipe(resolveDependencies({
...
// -->
return tsProject
.src()
.pipe(resolveDependencies({
...
Если вы не хотите использовать typescript
, вы можете использовать этот упрощенный gulpfile.js
и удалить все включения typescript
из package.json
:
gulpfile.js
var gulp = require("gulp");
var concat = require('gulp-concat');
var resolveDependencies = require('gulp-resolve-dependencies');
gulp.task("main", function() {
return gulp
.src(["src/main.js"])
.pipe(resolveDependencies({
pattern: /^\s*\/\/\/\s*<\s*reference\s*path\s*=\s*(?:"|')([^'"\n]+)/gm
}))
.on('error', function(err) {
console.log(err.message);
})
.pipe(concat('main.js'))
.pipe(gulp.dest("build/"));
});
packages.json
{
"scripts": {
"gulp": "gulp main"
},
"dependencies": {
"gulp": "^4.0.2",
"gulp-concat": "^2.6.1",
"gulp-resolve-dependencies": "^3.0.1"
}
}
Затем, после выполнения команды npm run gulp
, создается файл build/main.js
со следующим содержимым:
сборка/main.js
class SomeClass {
}
/// <reference path="./someimport.ts" />
someclass = new SomeClass();
someclass.delay = 1;
Что позволяет мне включить его в браузере с тегом script
после обслуживания файлов каталога build
:
<html>
<head>
<script src="main.js"></script>
</head>
<body>
<script type="text/javascript">
console.log(someclass.delay);
</script>
</body>
</html>
Связанные вопросы:
- https://www.typescriptlang.org/docs/handbook/gulp.html
- Могу ли я использовать машинописный текст без requireJS?
- Gulp простое объединение основного файла, для которого требуется другой JS файл
- Клиент на узле: Uncaught ReferenceError: требование не определено
- Как можно скомпилировать модули узлов машинописного браузера с помощью gulp?< /а>
- Объединение файлов с помощью babel
- Как требовать модули CommonJS в браузере?
- Есть ли альтернатива Browserify?
person
user
schedule
20.04.2020
paths.tscripts.src
? - person Pontiacks   schedule 30.09.2016paths.tscripts.src
это массив путей, содержащих исходный файл *.ts,paths.tscripts.dest
это каталог, в котором находится сборка. - person alesmit   schedule 30.09.2016paths.tscripts.src
? Пожалуйста, вставьте его - person Pontiacks   schedule 30.09.2016