gulpfile.js:
const gulp = require("gulp");
const concat = require("gulp-concat");
const sass = require("gulp-sass")(require("sass"));
const ts = require("gulp-typescript");
const del = require("del");
const outputFolder = "dist";
const cleanWorkload = (cb) => {
del.sync([outputFolder]);
cb();
};
/* WORKLOADS */
const scssWorkload = () => gulp.src("src/scss/index.scss").pipe(sass()).pipe(gulp.dest(outputFolder));
const tsWorkload = () =>
gulp
.src("src/ts/**/*.ts")
.pipe(
ts({
module: "es6",
target: "es5",
lib: ["DOM", "DOM.Iterable", "ESNext"],
})
)
.pipe(concat("tree.js"))
.pipe(gulp.dest(outputFolder));
/* DEFAULT */
const directCompilation = gulp.parallel(scssWorkload, tsWorkload);
gulp.task("default", gulp.series(cleanWorkload, directCompilation));
/* WATCH */
gulp.task("watch", () => {
gulp.watch("src/scss/**/*.scss", scssWorkload);
gulp.watch("src/ts/**/*.ts", tsWorkload);
});
源文件的代码段:
import ElementCreator from "./helpers/ElementCreator";
import Branch from "./types/Branch.interface";
import BranchDescription from "./types/BranchDescription.interface";
import TreeConfig from "./types/TreeConfig.interface";
export default class Tree {
private $el: HTMLElement;
private branches: Branch[];
...
问题是,当我运行gulp时,输出文件包含以下内容:
import ElementCreator from "./helpers/ElementCreator";
var Tree = /** @class */ (function () {
function Tree(config) {
...
var ElementCreator = /** @class */ (function () {
function ElementCreator() {
}
...
所以浏览器会抱怨ElementCreator已经被声明了
我如何告诉gulp删除所有这些import语句,因为这些文件无论如何都是连接在一起的?
1条答案
按热度按时间62lalag41#
在搜索了一段时间后,我找到了一个可行的解决方案:
首先,您需要执行
npm i gulp-strip-import-export
其次,重写
tsWorkload
,如下所示:第三,在所有文件中使用
export ClassName
而不是export default ClassName
通过这样做,您的所有js将被编译到一个文件中,而不存在任何模块系统
在那之后做:
而且你写的所有东西都可以随时得到,不需要任何进口