- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序依赖于公司内部的 TS 库,该库很少被编辑。我刚刚更新了它,现在用于构建它的 gulp 任务之一将失败。所有其他任务将独立工作或按顺序/并行使用,但使用 @rollup/stream
包的任务会导致 gulp 在声明自己完成后挂起。发现这一点是因为构建自动化最终终止了构建,因为它暂停了 2 小时以等待 gulp 任务完成。
我不得不更新我们的内部库,因为它由于以下问题导致构建失败。
'rollup' errored after 1.51 s
Error: '__spreadArray' is not exported by node_modules\tslib\tslib.es6.js, imported by src\ObjectUtils.ts
所以我将 tsconfig.json
文件从 "target": "es5",
更新为 "target": "es6",
这会导致汇总挂起。
运行 gulp rollup
得到以下输出
Using gulpfile path/to/gulp/file
Starting 'rollup'...
//
// Outputs all the files being rolled up here...
//
Finished 'rollup' after 1.43 s
// The gulp process then stays open instead of closing and returning me to my prompt
举个例子,我在本地运行任务,然后自己用 control+c 退出,它报告在那里等待 10 分 15 秒
阅读了我能找到的所有文档和 SO 问题后,我确信我们正在做 async gulp tasks文档建议处理流但它不会工作。然后我尝试使用 .on('end', () => {//etc })
自己手动关闭返回的汇总流,将内容包装在 promises 中并返回一个在流已完成,使用提供给每个任务函数的回调,上述组合,但我无法让汇总任务正确完成并将控制权返回给提示。
我已经包含了我的 gulpfile 的相关部分,tsconfig.json 和我的 package.json 依赖项。
// gulpfile.js
const gulp = require('gulp');
const gulpif = require('gulp-if');
const terser = require("gulp-terser");
const typescript = require("@rollup/plugin-typescript");
const rollup = require("@rollup/stream");
const buffer = require('vinyl-buffer');
const source = require('vinyl-source-stream');
const production = process.env.NODE_ENV == 'production';
function rollupTask () {
// rollup() returns a stream, so returning this should satisfy the async tasks requirements.
// When the stream closes it should tell gulp the tasks has finished right?
return rollup({
input: "./src/main.ts",
external: [
"lodash",
],
output: {
format: "cjs",
sourcemap: true
},
plugins: [
typescript(),
],
})
.pipe(source("common.bundle.js"))
.pipe(buffer())
.pipe(gulpif(production, terser()))
.pipe(gulp.dest('./dist'));
};
exports.rollup = rollupTask;
// tsconfig.json
{
"compilerOptions": {
"declaration": false,
"module": "es2015",
"target": "es6",
"emitDecoratorMetadata": true,
"listFiles": true,
"noImplicitAny": false,
"noUnusedLocals": true,
"noLib": false,
"removeComments": true,
"sourceMap": true,
"experimentalDecorators": true,
"lib": [
"ES5",
"Dom",
"ScriptHost",
"ES2015",
"ES2016",
"ES2017"
]
}
}
// package.json dependencies
"dependencies": {
"lodash": "^4.17.5"
},
"devDependencies": {
"@rollup/plugin-typescript": "^6.1.0",
"@rollup/stream": "^1.1.0",
"@types/lodash": "^4.14.165",
"del": "^6.0.0",
"gulp": "^4.0.2",
"gulp-if": "^3.0.0",
"gulp-sourcemaps": "^3.0.0",
"gulp-terser": "^2.0.0",
"gulp-tslint": "^8.0.0",
"gulp-typescript": "^5.0.1",
"merge2": "^1.4.1",
"rollup": "^2.33.3",
"tslint": "^6.1.3",
"typescript": "^4.0.5",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
如果事实证明我可以在 tsconfig.json
中继续使用 "target": "es5",
并修复 __spreadArray
找到问题,我也可以这样做。
最佳答案
我被困在两个不同的错误之间:
tsconfig.json
中设置 "target": "ES6"
会因永不退出 gulp 任务而中断。tsconfig.json
中设置为 "target": "ES5"
会提示 tslib< 中缺少 __spreadArray
函数
。这是我最终解决这个问题的方法:
npm i --save-dev tslib
手动 tslib
以确保有可用的最新版本。因为我在步骤 1 中更新了 TS 版本。它应该包括最新的 tslib
这可能是不必要的......但无论如何手动包含它感觉很好。@rollup/plugin-typescript
分支让它工作。这本身就是一个奇怪的问题,因为据说 fork 只存在于在控制台中添加错误日志记录以告诉您任何 TS 错误。但是现在原始项目也输出错误,但不再为我们(或者可能只是我)使用 gulp。 fork 在 npm 上得到维护和流行,所以我不太担心,但我仍然更愿意使用“官方”包。显然,我更改了我的 gulpfile.js
以使用这个新包,但就 API 而言,它的替代品有所下降。tslib
Node 模块,我手动检查以确保它具有我们需要的 __spreadArray
函数。我在 this answer 中找到了此修复程序而我正在寻找线索的相关问题以上所有的一些组合修复了它。可能 3 和 4 是主要修复。
以下是我的 tsconfig.json
和我的 package.json
的相关部分的更新版本,以防它对任何 future 的读者有用。
// tsconfig.json
{
"compilerOptions": {
"declaration": false,
"module": "ES2015",
"target": "ES6",
"emitDecoratorMetadata": true,
"listFiles": true,
"noImplicitAny": false,
"noUnusedLocals": true,
"noLib": false,
"removeComments": true,
"sourceMap": true,
"experimentalDecorators": true,
"importHelpers": true,
"paths": {
"tslib": [
"./node_modules/tslib/tslib.d.ts"
]
},
"lib": [
"ES5",
"Dom",
"ScriptHost",
"ES2015",
"ES2016",
"ES2017"
]
}
}
// package.json
"dependencies": {
"lodash": "^4.17.21"
},
"devDependencies": {
"@rollup/plugin-typescript": "^8.2.5",
"@rollup/stream": "^2.0.0",
"@types/lodash": "^4.14.165",
"del": "^6.0.0",
"gulp": "^4.0.2",
"gulp-if": "^3.0.0",
"gulp-sourcemaps": "^3.0.0",
"gulp-terser": "^2.0.1",
"gulp-tslint": "^8.1.4",
"gulp-typescript": "^5.0.1",
"merge2": "^1.4.1",
"rollup": "^2.56.3",
"rollup-plugin-typescript2": "^0.30.0",
"tslib": "^2.3.1",
"tslint": "^6.1.3",
"typescript": "^4.4.2",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
},
"files": [
"dist/"
]
关于javascript - 在 tsconfig.json 中使用 @rollup/stream 和 es6 目标时,Gulp 4 任务不会完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69016358/
我创建了一个基于命令行可移植脚本的工业化不可知构建系统,可用于快速构建多个依赖项目,而不必依赖特定的 IDE 或构建工厂。它是不可知的,因为它不是基于单个构建引擎。我使用 cmake 创建了第一个版本
我最初使用 Java 目标开发了一个语法(用于 TestRig 支持),然后将其移植到 Python(从 git hub 语法存储库扩展了 Python3 语法,因此需要将操作移植到 Python
我有一个以 iPhone 和 watchOS 为目标的 Xcode 项目。 iPhone 目标使用加速度计,模拟器不支持。我可以只启动 iPhone 应用程序而不启动 watch 目标吗?我从: Ca
您好,我想创建一个批处理文件,用于在 .eml 文件(目标 A)中查找某些关键字,然后删除它们所在的行。之后,我需要批处理文件将"new"文件放入(目标 B)中的单独 .eml 文件中。文件也可以是
当尝试通过 IntelliJ 运行示例 CorDapp (GitHub CorDapp) 时,我收到以下错误: Cannot inline bytecode built with JVM target
我在尝试向我的 kotlin spring 项目添加一些依赖项时遇到问题。我使用 spring boot 初始化程序来运行一个基本项目。 我的问题:如果我取消对 jackson 或 Koin 依赖项的
这是有问题的网站: http://www.onepixelroom.com/londonrefurb 当我点击关于部分后面的多个圆圈时,我希望它更改上面文本中的引号。 到目前为止,我得到它来显示 文本
单击后,我将删除两个元素 $(this) 和 $("#foo")。 目前我的代码如下所示: $(this).remove(); $("#foo").remove(); 如何在不重复自己的情况下优化它?
我有一个小脚本,可将 Markdown 文件编译为 html,并将其与一些样式表和 javascript 一起插入到模板的主体中。我有一个 GNU makefile 来完成这个: output.htm
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
一些背景知识: 在android中我们开发了同样的应用,基本上我们先开发了Android应用,现在我们创建了它的IOS版本,所以这个应用有多个客户端。在 android 中,我们实际上是使用 Andr
我想知道是否可以使用 knockout 来更改html中的目标() 我的所有其他信息都在 JavaScript 中,所以这对我来说是一个大问题。这是我的 JavaScript: var library
这个问题在这里已经有了答案: Selecting and manipulating CSS pseudo-elements such as ::before and ::after using j
我在我的有向图中添加了一堆节点和顶点,使用设置 typedef boost::adjacency_list graph; 创建 Node有一个节点名称字符串,Edge它的分数有一个整数。我试图遍历所有
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
如何存储我在 NSUserDefaults 中创建的 Goal 类型的对象数组? ( swift ) 代码如下: func saveGoalList ( newGoalList : [Goal] ){
Array.prototype.indexOf 和 Date.now 已在 ES5 中引入。如果我编译存储在文件 test.ts 中的以下代码,为什么 Typescript 不能转译? Date.no
我正在阅读有关属性的内容,并了解到可以使用您的代码将它们应用于不同的目标实体 -(请参阅 Attribute Targets)。 因此,查看我项目中的 AssemblyInfo.cs 文件,我可以看到
给定一个 Makefile: all: build/a build/b build/c # need to change this to all: build/* build/a:
我有一个带有多框架目标的项目- netstandard2.0;net471 . 我想为 netframework 构建解决方案和 netstandard分别。 目前我使用这个 MSBuild 命令:
我是一名优秀的程序员,十分优秀!