问题标签 [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.
node.js - 是否有可能使用 tsify 获得类似于 vanilla browserify 的“路径”功能?
在 vanilla browserify 中,您可以指定“paths”选项来设置 browserify 查找“必需”文件的目录。
在使用 tsify 编译 TypeScript 时,这个选项似乎被忽略了。首先使用路径的原因是为了避免每个 require 语句都以"../../../etc"
.
我知道另一种选择是将代码放在 node_modules 中,但首先这看起来确实很奇怪(您通常不会将应用程序代码与您的依赖项一起保存)但它还要求您将 node_modules 提交到您的存储库并确保没有人永远清除该目录以重新安装依赖项。
另一种选择;符号链接在 Windows 上不起作用,而且似乎是一个相当“hacky”的解决方案。
我对 browserify 很陌生(来自 RequireJS),所以我可能忽略了一些东西。但在这一点上,我真的很感激一些意见。如果它有任何区别,我也在使用 gulp。
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 加载。只是给人们提个醒。
regex - 为什么VS代码中的这个problemMatcher不起作用?
为什么我的问题匹配器不起作用?我很确定正则表达式,但它没有报告任何问题,即使标准输出上有一些问题......
javascript - 将 typescript 库捆绑到一个 .js 文件和一个 .d.ts
我正在使用 TypeScript 开发一个在 webbrowser 中使用的库。
我正在使用“system”作为模块编写单独的打字稿文件作为模块,例如这是主文件:
这是第一个模块:
好吧,我正在使用 构建它gulp-typescript
,我将它转换为es5
并为每个 .ts 文件创建一个 .js 和一个 .d.ts 文件。到目前为止一切顺利,我有一个 npm 包,我可以从其他 npm 项目中使用我的项目。但 ...
我也想从网络浏览器中使用它。我想将所有 .js 文件捆绑在一起并使用这种方式:
我使用dts-bundle生成了一个 .d.ts 文件,并尝试通过两种方式捆绑 .js 文件:
使用连接:
gulp.src('dist/js/src/**/*.js') .pipe(concat('Ng2Emulation-bundle.js')) .pipe(gulp.dest('dist/release'));
使用 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
但我没有运气:(
我认为在包创建过程或模块行为中有些东西我不明白......
如何捆绑它?我怎么能做到?
javascript - TSify 在 Browserify 期间忽略转换
在我基于 gulp 的工作流程中,我试图在 tsify 编译之前对所有打字稿文件应用转换:
但是,tsify 插件似乎忽略了我的插件对源文件所做的任何更改,并使用磁盘上存在的 .ts 文件。生成的捆绑包不包含我希望转换进行的任何更改。
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
typescript - 静态属性继承未按预期工作
我有这样的东西;
测试库.ts
测试
SomeOtherClass.ts
我的 IDE 建议在myValue
上可用Test
,但在运行时它不反映TestBase.myValue
. IDE 是否错误地建议允许静态属性继承,或者 browserify/tsify 是否破坏了某些东西?
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?
谢谢!
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 已编译,至少它在构建错误时失败,它只是没有放入包中。
javascript - 在浏览器中找不到 Browserify 全局变量
我正在用 TypeScript 编写脚本,当我使用 browserify 进行转换时,在浏览器中找不到我的主变量。
main.ts
gulpfile.js
在我的页面中,我包含了新创建的文件,并尝试调用该gamesmart
变量,但找不到它。
我怎样才能使它成为一个全局/根变量?