问题标签 [tsify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
162 浏览

node.js - 是否有可能使用 tsify 获得类似于 vanilla browserify 的“路径”功能?

在 vanilla browserify 中,您可以指定“paths”选项来设置 browserify 查找“必需”文件的目录。

在使用 tsify 编译 TypeScript 时,这个选项似乎被忽略了。首先使用路径的原因是为了避免每个 require 语句都以"../../../etc".

我知道另一种选择是将代码放在 node_modules 中,但首先这看起来确实很奇怪(您通常不会将应用程序代码与您的依赖项一起保存)但它还要求您将 node_modules 提交到您的存储库并确保没有人永远清除该目录以重新安装依赖项。

另一种选择;符号链接在 Windows 上不起作用,而且似乎是一个相当“hacky”的解决方案。

我对 browserify 很陌生(来自 RequireJS),所以我可能忽略了一些东西。但在这一点上,我真的很感激一些意见。如果它有任何区别,我也在使用 gulp。

0 投票
1 回答
2262 浏览

typescript - Browserify + Watchify + Tsify + Gulp 的性能问题

我有一个依赖于 jQuery、React 和 SocketIO 的“中等”Typescript 应用程序(例如,不是微不足道的,但也不是企业级的,有数千行)——以及其他较小的库。

我当前的 gulpfile 是这样的:

一切都按预期工作,但是,使用 watch 任务时的构建时间需要很多秒。奇怪的是,我的任务报告脚本的重新编译发生在 500 毫秒以下(“时间”事件上的事件处理程序),但如果我在脑海中数数,它直到三到四秒后才完成.

请注意,在我粘贴现有的 TypeScript 代码之前,我正在快速加载/捆绑 jQuery、React、Moment 和其他我正在使用的库。因此,我认为使用单独的供应商捆绑包不会加快任何速度。此外,不写出源图似乎也不会影响性能。

在我切换到 browserify 之前,我使用 gulp-typescript 进行编译并使用 requirejs 进行模块加载。这些构建花了不到一秒钟的时间。然而,requirejs 因其他原因引起了问题——无论哪种方式,我都想从 AMD 转移到 CommonJS。

目前这不是一个问题,但随着项目的发展,它肯定会导致我的开发流程出现问题。对于一个只有这么大的项目,处理更大的项目需要多长时间?

此外,它还会导致 Visual Studio 出现问题。这是一个 ASP.NET 5 应用程序,Visual Studio 显然坚持每次更改时都重新加载/重新解析捆绑的 JavaScript 文件,导致每次更改后 IDE 延迟 1-2 秒:在重新编译本身需要 3-4 秒。该脚本正在呈现到我的 wwwroot 文件夹,并且似乎无法使用 ASP.NET 5 工具“排除”脚本子文件夹。

我知道我在某处遗漏了一些东西。一个可能的问题是 tsify 没有使用 typescript 的“项目”功能来实现重新加载,导致 TypeScript 编译器为每次更改重新处理每个文件。

无论如何,我不可能是唯一一个在玩具项目之外使用这些工具的人,所以我在这里问是否有人有更好的解决方案;因为除了这个问题,一切都运作良好。

编辑 - - - - - - - - - - - - - - - -

好吧,我得吃我自己的话了。由于我将我的第三方库捆绑到他们自己的包中,构建时间缩短到大约一秒钟。这是我更新的 gulpfile(注意新的 dev.scripts.vendor 任务和 buildScripts 函数中的 .external 调用)

但是,我仍然遇到一个奇怪的问题。禁用源映射(现在似乎对速度有影响),我的 on("time", () => {}) 回调报告每次文件更改需要 60-80 毫秒,但它仍然挂起大约一秒钟. 一秒钟是我愿意等待的一切,所以我再次担心随着项目的发展,这种等待也会增加。

当事件报告的事情要小得多时,看看这额外的一秒钟时间花在了什么上会很有趣。也许我会开始深入研究源代码,因为似乎没有人立即给出答案。

另一个问题这只是一个旁注,但 debowerify 不再适用于此。使用 debowerify+bower 时,它将继续在最终输出中呈现所需的模块,即使该模块已列在“外部”列表中。因此,目前使用此设置,我只能使用 npm 模块,除非我可以为我的应用程序包添加更多编译时间。

另外,我了解到 debowerify 将覆盖 npm 模块,并且它基于 bower_components 的目录列表,而不是您的 bower 配置文件。我在 npm 中安装了 jQuery,并且只在 bower 中安装了引导程序;但是由于 bootstrap 将 jQuery 作为依赖项下拉,因此 bower jQuery 模块优先于 NPM jQuery 加载。只是给人们提个醒。

0 投票
1 回答
3217 浏览

regex - 为什么VS代码中的这个problemMatcher不起作用?

为什么我的问题匹配器不起作用?我很确定正则表达式,但它没有报告任何问题,即使标准输出上有一些问题......

0 投票
1 回答
1603 浏览

javascript - 将 typescript 库捆绑到一个 .js 文件和一个 .d.ts

我正在使用 TypeScript 开发一个在 webbrowser 中使用的库。

我正在使用“system”作为模块编写单独的打字稿文件作为模块,例如这是主文件:

这是第一个模块:

好吧,我正在使用 构建它gulp-typescript,我将它转换为es5并为每个 .ts 文件创建一个 .js 和一个 .d.ts 文件。到目前为止一切顺利,我有一个 npm 包,我可以从其他 npm 项目中使用我的项目。但 ...

我也想从网络浏览器中使用它。我想将所有 .js 文件捆绑在一起并使用这种方式:

我使用dts-bundle生成了一个 .d.ts 文件,并尝试通过两种方式捆绑 .js 文件:

  1. 使用连接:

    gulp.src('dist/js/src/**/*.js') .pipe(concat('Ng2Emulation-bundle.js')) .pipe(gulp.dest('dist/release'));

  2. 使用 tsify:

    browserify() .add('src/ng2emulation.ts') .plugin(tsify, { noImplicitAny: false }) .bundle() .on('error', function (error) { console.error(error.toString()); }) .pipe(gulp.dest("Ng2Emulation-bundle.js"));

有两种方法创建包,但是当我尝试从浏览器中使用它时,它会尝试加载每个模块,出现如下错误:

我正在使用 Visual Studio 2013,一个 MVC ASP.NET 应用程序。我的主要 html (_layout.cshtml) 是这样的:

这是我的App/Boot.ts

我试图通过加载包:<script src="~/Scripts/Ng2Emulation-bundle.js"></script>并从中删除Ng2Emulation地图,system.config但我没有运气:(

我认为在包创建过程或模块行为中有些东西我不明白......

如何捆绑它?我怎么能做到?

0 投票
1 回答
643 浏览

javascript - TSify 在 Browserify 期间忽略转换

在我基于 gulp 的工作流程中,我试图在 tsify 编译之前对所有打字稿文件应用转换:

但是,tsify 插件似乎忽略了我的插件对源文件所做的任何更改,并使用磁盘上存在的 .ts 文件。生成的捆绑包不包含我希望转换进行的任何更改。

0 投票
1 回答
700 浏览

javascript - 如何使用 browserify 从 node_modules 加载 typescript 模块?

当我跑步时tsc,一切都运行得很好。但是,我无法理解您打算如何从节点模块导入其他打字稿模块。

这是我的 gulp 文件的重要部分:

当我使用时,

typescript 模块节点模块在哪里tsmvc,我得到cannot find module tsmvc.Atom 不会抱怨并显示智能感知,tsc 不会抱怨,但 tsify 会。谁能指出我做类似事情的 gulp 文件或解释这个过程?

这是 github 存储库:https ://github.com/Davste93/typescript-mvc-consumer/blob/master/gulpfile.js

0 投票
5 回答
984 浏览

typescript - 静态属性继承未按预期工作

我有这样的东西;

测试库.ts

测试

SomeOtherClass.ts

我的 IDE 建议在myValue上可用Test,但在运行时它不反映TestBase.myValue. IDE 是否错误地建议允许静态属性继承,或者 browserify/tsify 是否破坏了某些东西?

0 投票
1 回答
1488 浏览

typescript - Gulp 中的 TypeScript + Browserify + SourceMaps?

嗨这个问题难倒我。

我想知道,在从 TS 编译并使用 Browserify 之后,我是否可以让我的 SourceMaps(来自 gulp-sourcemaps)一直指向我的 TS 文件。

目前我让它工作,所以我使用 tsify 来编译 TS,然后我将它全部捆绑到一个 all.js 中,然后将它 uglify(缩小)到一个 all.min.js 中。我也有 SourceMaps,但只是从缩小版本映射到 all.js。

我已经为此搜索了很多。我之前也做过 SourceMaps,从 JS 缩小到我的 TS,但在那种情况下我没有使用 Browserify。

我当前的 Gulp 任务:

请注意,这里的一个大问题是 sourcemaps 调用之间的所有内容都需要支持 gulp-sourcemaps,而 Browserify 不支持。Gulp 也有一个 Typescript 编译器,但是我将如何使用 Browserify?

谢谢!

0 投票
1 回答
833 浏览

typescript - 在 gulp browserify 中混合使用 javascript 和 typescript

我有很好的用于 javascript 的 gulp browserify 工作流程,现在还有 typescript。它们将源文件与模块组合在一起,并生成一个 .js 文件以供在浏览器中使用。

但是,有了一个较旧的 javascript 项目,我现在想使用 typescript 引入新功能——而不是将所有内容都转换为 typescript。

理想情况下,我希望 browserify 检测和预编译 ts 和 tsx,并在 browserifying 之前将结果与 js 文件一起传递给 babel:

此设置实际上可以编译并适用于 js 部分,但我的打字稿文件未捆绑。 是否可以以这种方式将打字稿文件添加到现有的 javascript 项目中?

注意:我目前正在添加一个 React tsx 文件,但假设常规 ts 文件的情况相同。

注意:我尝试手动将 tsx 文件“添加()”到 browserify 包,没有任何期望或结果。

注意: tsx 已编译,至少它在构建错误时失败,它只是没有放入包中。

0 投票
1 回答
427 浏览

javascript - 在浏览器中找不到 Browserify 全局变量

我正在用 TypeScript 编写脚本,当我使用 browserify 进行转换时,在浏览器中找不到我的主变量。

main.ts

gulpfile.js

在我的页面中,我包含了新创建的文件,并尝试调用该gamesmart变量,但找不到它。

我怎样才能使它成为一个全局/根变量?