问题标签 [tsickle]

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 投票
0 回答
1072 浏览

angular - google-closure-compiler 无法处理用 tsickle 转译的 Angular 2

我有一个Angular 2打字稿项目,我想将它捆绑到一个 JS 文件中。引导程序:

main.ts

我使用Angular 2's Ahead-of-Time 编译器来生成ngfactory.ts文件。然后我跑来tsickle将我的文件转换为与 Google Closure Compiler 兼容的 JS。这毫无困难地完成了:

结果如下:

main.js

最后,我使用google-closure-compiler-js创建一个 gulp 任务,将所有 JS 捆绑到一个文件中。

gulpfile.js

任务立即失败并出现许多错误。这是一个示例:

dev\main.js:3 (JSC_REFERENCE_BEFORE_DECLARE) 声明前引用的变量:module$contents$C_$websites$learn$angular2$dev$main_platformBrowser

dev\main.js:5 (JSC_REFERENCE_BEFORE_DECLARE) 声明前引用的变量:module$contents$C_$websites$learn$angular2$dev$main_AppModuleNgFactory

dev\main.js:7 (JSC_REFERENCE_BEFORE_DECLARE) 声明前引用的变量:module$contents$C_$websites$learn$angular2$dev$main_enableProdMode

dev\main.js:10 (JSC_POSSIBLE_INEXISTENT_PROPERTY) 属性 bootstrapModuleFactory 从未定义过?

dev\main.js:3 (JSC_INTERNAL_ERROR_UNEXPECTED_TOKEN) 内部错误:TypeCheck 不知道如何处理 IMPORT

dev\main.js:3 (JSC_INTERNAL_ERROR_UNEXPECTED_TOKEN) 内部错误:TypeCheck 不知道如何处理 IMPORT_SPECS ...

我正在使用tsickle截至 2016 年 10 月 10 日从 GitHub 克隆的最新源以及"google-closure-compiler-js": "^20160916.0.0".

我错过了一步吗?

0 投票
0 回答
163 浏览

typescript - 闭包编译器不会从自调用函数中删除死代码

我正在编写一个 TypeScript 应用程序,它需要两个数字并将数字的总和打印到控制台。

calculator2.ts

app.ts

我运行 tsickle 将 TypeScript 转换为 Google Closure Compiler 可以理解的 JavaScript。然后我运行带有高级优化标志的闭包编译器来缩小我的代码。

这是输出(漂亮打印):

正如预期的那样,这将打印 7,但是calculator.subtract()(d.a在缩小的代码中) 没有被删除,而我没有使用它。

如果我calculator像这样修改文件:

闭包编译器输出:

有没有办法告诉闭包编译器该subtract函数未被调用(至少不是从app.ts)并且可以将其删除?

另一个测试:

使用'calculator3.ts'

和“app.ts”

生成:

哪个删除了subtract功能,但没有优化console.log("Answer: 7")(这不是必需的,但会很棒)

0 投票
2 回答
7112 浏览

typescript - 闭包编译器 + 打字稿

我想使用 Typescript,然后使用 Closure Compile(高级编译)来定位 ES5 并缩小输出。

我必须使用tsickle代替 tsc 吗?它缺乏对 tsc 的所有选项的支持,并且雄心勃勃,因为它想将 Typescript 类型转换为 Closure 类型(不是 100% 兼容的)。我真的不需要使用闭包类型;我只需要缩小/属性重命名。

我可以使用 tsc 将 Typescript 编译为 ES6 模块并使用 Closure Compiler 来缩小这些模块(不进行类型检查或基于类型的优化)吗?

奖励:如果我想使用闭包库,这个答案会改变吗?

0 投票
1 回答
174 浏览

javascript - 尝试使用 tsickle/closure 编译 angular5 项目,我得到“goog.module 的主体无法引用它”。

我正在尝试使用 google 闭包编译一个相对复杂的 angular5 项目。

首先我使用tsickle将代码编译成对 google 闭包友好的语法,然后我尝试使用 google 闭包来创建最终包。

不幸的是,tsickle 似乎创建了一个与 google 闭包不兼容的模块格式,对于我拥有的所有模块,我都收到以下错误:

但是,考虑到最近 ngc -> tsickle 使用 angular5 切换以帮助构建闭包的意图,我认为它应该可以工作。

检查一点 my path/to/component.js,我在一开始就发现了这个:

看来,打字稿编译器(由 tsickle 内部调用)将此代码放在所有模块之前,它在 tsickle 不知情的情况下执行此操作,并且使模块格式与 google 闭包不兼容!

该怎么办?如何解决它?

0 投票
2 回答
182 浏览

angular - 导出的枚举不会用 tsickle/closure 编译

我正在尝试使用新的 tsickle/closure 链编译一个角度项目。但是,它似乎必须在所有枚举上遵循错误:

src/path/to/YourEnumType.ts:1: 错误 - 导出必须是模块顶层的语句

我的代码是这样的:

我该如何处理这个问题?

0 投票
1 回答
1127 浏览

google-closure-compiler - 如果我在不同目录中使用 tsconfig.json 调用 Tsickle,则会显示“在配置文件中未找到错误输入”

我收到此错误:

错误在配置文件“target/src/tsconfig.json”中找不到输入。指定的“包含”路径为“[”./my/pathes/**/*.ts“]”,“排除”路径为“[“some/other/thing”]”。

为什么?考虑到这tsickle只是一个包装器tsc,如果我进行等效tsc调用,它会毫无问题地发生。在 tsickle-tsc 交互中一定有问题,但是什么?

0 投票
0 回答
1879 浏览

angular8 - 通过 ngc TypeError 编译 TypeScript 源:无法读取未定义的属性 'directoryExists'

从 Angular CLI 1.7.0 更新到 Angular 8。

让一切在本地工作,但在“npm packager”步骤中构建定义失败。

最初在缺少 tstickle 时出错,在将其添加到 package.json 后,“tsickle”:“0.39.1”

2020-09-24T21:15:41.5201500Z 通过 ngc 编译 TypeScript 源 2020-09-24T21:15:41.5201643Z 2020-09-24T21:15:41.5201764Z 构建错误 2020-09-24T21:15:41.52018Cannot8Error读取未定义的属性“directoryExists”

包.json:

任何解决此问题的建议将不胜感激。

0 投票
3 回答
1696 浏览

angular - 无法在 Angular 中创建新项目:tsickle 依赖问题

我已经安装了:

  • node.js v15.6.0
  • npm 7.5.0
  • 角 CLI:11.1.2

我在 Windows 10、64 位上运行。

我正在尝试通过运行来创建我的第一个项目:

其中“angular-demo”是项目名称。该命令创建一个包含一些初始文件的项目目录,然后它运行 npm 并在日志文件中显示以下消息失败

我用谷歌搜索了一下,发现 tsickle 是一些与打字稿相关的工具,它只支持最多 3 个打字稿版本,而不是 4 个。我不知道为什么 angular 会尝试安装打字稿版本和 tsickle 的这种组合。

0 投票
2 回答
956 浏览

node.js - 无法构建 Angular 7 组件库

我曾经在 Angular 版本 11 中顺利创建组件库,没有任何问题,但是当我在 Angular 版本 7 中创建组件库时,在 ng build component lib 时出现错误

他要求tsickle模块,但是在json包中tsickle已经存在

我的package.json

我也尝试过将其关闭"annotateForClosureCompiler": false 以不被束缚/需要 tickle 但这也不起作用

我也尝试过替换 tsickle 指令@node_modules/ng-packagr/lib/ngc/create-emit-callback.js

const tsickle = require("tsickle/src/tsickle");

成为

const tsickle = require("tsickle/build/src/tsickle");

或者

const tsickle = require("../../../tsickle/out/src/tsickle");

它不起作用,而是添加到我的错误消息中

我的第 7 版 Angular 应用程序到底发生了什么?为什么不能 ng 构建组件库

我很沮丧,所有的帮助和建议,我谢谢你