- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我目前正在编写一个业余项目,在那里我可以了解有关 TypeScript 和 ES6(使用 babel)的更多信息。
我想在我的 TypeScript 中使用 ES6,所以我决定采用以下工作流程。
Typescript (ES6) -> Babel (ES6) -> ES5
现在我正在使用 Gulp 自动执行所有这些操作,但我很难让源映射正确生成。我应该提一下,这个样式是/r/typescript 上的一个用户向我推荐的,所以我什至不确定它是否可行。
无论如何这是我当前的 gulp 任务
var server = $.typescript.createProject('src/server/tsconfig.json');
gulp.task('build', ['vet'], function () {
var sourceRoot = path.join(__dirname, 'src/server/**/*.ts');
return gulp.src('src/server/**/*.ts')
.pipe($.sourcemaps.init())
.pipe($.typescript(server))
.pipe($.babel())
.pipe($.sourcemaps.write('.', { sourceRoot: sourceRoot}))
.pipe(gulp.dest('build/server'));
});
我尝试了很多不同的方法,但都没有用。在 VSCode 中调试时,我的应用程序的入口点:build/server/index.js
加载并正确找到源文件 src/server/index.ts
。
然而,当 VSCode 尝试进入另一个文件时说 build/server/utils/logger/index.js
它会寻找 src/server/utils/logger/index.js
它找不到,因为它应该在寻找 *.ts 文件。
那我做错了什么?或者这甚至可能吗?我已经盯着这个看了大约 5 个小时了。所以任何见解都会很棒。
VSCode 0.9.x 还显示 '.../.js' file not found
而 VSCode 1.0 只是默默地失败。
我的 tsconfig.json,它由 $.typescript.createProject()
传入
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"target": "ES6",
"sourceMap": true,
"outDir": "build/server"
}
}
.babelrc
{
"presets": ["es2015"]
}
这里是相关的npm包
"devDependencies": {
"babel-polyfill": "^6.2.0",
"babel-preset-es2015": "^6.1.18",
"gulp-babel": "^6.1.0",
"gulp-sourcemaps": "^1.6.0",
"gulp-typescript": "^2.9.2"
}
编辑:我对 gulp-sourcemaps 做了一些调查,当不使用 babel 时,sourcemaps 工作正常。 (删除了所有不相关的信息)
src/server/up/up2/four.ts - 没有 Babel
{
"history": [ "/home/user/code/test/src/server/up/up2/four.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["up/up2/four.ts"],
"file": "up/up2/four.js"
}
}
注意 sourceMap.sources
它如何列出正确的源文件 up/up2/four.ts
下面是我将 gulp-babel 添加到任务中的示例。
src/server/up/up2/four.ts - 使用 Babel
{
"history": [ "/home/user/code/test/src/server/up/up2/four.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["four.js"],
"file": "up/up2/four.js"
},
"babel": {
"...": "..."
}
}
请注意 sourceMap.sources
现在如何错误地显示 four.js
而不是 typescript 文件。
奇怪的是,只要 typescript 文件在根目录 src/server
中,它们就可以很好地构建源映射。
src/server/two.ts - 使用 Babel
{
"history": [ "/home/user/code/test/src/server/two.js" ],
"base": "/home/user/code/test/src/server/",
"sourceMap": {
"sources": ["two.ts"],
"file": "two.js"
},
"babel": {
"...": "..."
}
}
最佳答案
这个问题中的具体问题似乎与 Babel 为不在工作目录中的文件生成的源映射不正确有关。已经有一个问题提交 here .
对于像这样的乙烯基文件对象
new File({
cwd: '.',
base: './test/',
path: './test/some/file.js'
...
});
生成的源映射应该是这样的
{
...
"sources": ["some/file.js"]
...
}
但是 gulp-babel
给出了
{
...
"sources": ["file.js"]
...
}
这会导致 Typescript source maps 和 Babel source maps 被错误地合并,但只有当文件比工作目录更深时才会这样。
虽然这个问题正在解决,但我建议使用 Typescript 定位 ES5 并完全绕过 Babel。这会生成正确的源映射。
gulp.task('build', function () {
return gulp.src('src/server/**/*.ts')
.pipe(sourcemaps.init())
.pipe(typescript({
noImplicitAny: true,
removeComments: true,
preserveConstEnums: true,
target: 'es5',
module: 'commonjs'
}))
.pipe(sourcemaps.write('.', { sourceRoot: 'src/server' }))
.pipe(gulp.dest('build/server'));
});
你很接近,但我注意到你的配置中有几个错误:
"module": "commonjs"
与 "target": "es6"
不兼容。使用 Typescript 输出 ES6 模块,让 Babel 将它们转译为 CommonJS。"outDir"
在使用 Gulp 时不是必需的,因为您使用的是流。中间结果(即 Typescript 的结果)根本不会写入磁盘。"sourceMap": true
不需要与 Gulp sourcemaps
一起使用。我用 babel@6.1.18 和 typescript@1.6.2 创建了一个为我编译的项目。
目录结构
.
├── gulpfile.js
└── src
└── server
├── one.ts
└── two.ts
一个.ts
export class One {};
two.ts
import { One } from './one';
export class Two extends One {}
gulpfile.js
为了简洁起见,我已经内联了所有配置,但您应该能够同样轻松地使用配置文件。
var gulp = require('gulp');
var sourcemaps = require('gulp-sourcemaps');
var typescript = require('gulp-typescript');
var babel = require('gulp-babel');
gulp.task('build', function () {
return gulp.src('src/server/**/*.ts')
.pipe(sourcemaps.init())
.pipe(typescript({
noImplicitAny: true,
removeComments: true,
preserveConstEnums: true,
target: 'es6'
}))
.pipe(babel({
presets: [ 'es2015' ]
}))
.pipe(sourcemaps.write('.', { sourceRoot: 'src/server' }))
.pipe(gulp.dest('build/server'));
});
关于javascript - 使用 TypeScript 和 Babel gulp sourcemaps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817841/
实习测试框架有没有 有任何 gulp 插件或文档可以与 gulp 集成吗? 最佳答案 它看起来不像,但我已经做到了 使用 gulp-shell : gulp.task('intern', shell.
我正在寻找答案,不必深入或详细。只是想确切地知道任务序列发生了什么。 gulp.task('name',['*this right here*'], function() { // conte
假设有四个任务 'a'、'b'、'c'、'd'(b 依赖于 c 和 d;c 和 d 都依赖于 a),因此任务按以下顺序运行: a-> (c, d) -> b 这是相应地工作的 gulpfile.js:
我安装了本地gulp插件,并意识到我不需要它。如何删除它,是否有例如npm remove gulp-sass这样的命令? 最佳答案 只需运行npm uninstall --save即可。转到此链接h
我使用del包删除文件夹: gulp.task('clean', function(){ return del('dist/**/*', {force:true}); }); 但是,如果dis
有一个 super 简单的 gulp 文件,我想在其中依次运行一些基本的 gulp 任务。 我似乎无法在 Gulp v4 中运行它。使用 run-sequence 在 Gulp v3 中有类似的东西而
我目前有这样的文件结构 SASS gulpfile.js node_modules sites example-site scss
我创建了一个简单的 Gulp 任务来检查我的 ES6 文件中的更改。我想转换它们并在出现问题时显示错误消息。 正在显示错误屏幕。但是,当一切都成功时,我想显示不同的信息。 我试过 .on('end')
我已经安装了gulp在全局范围内 sudo npm install --global gulp-cli 和本地 npm install --save-dev gulp /usr/local/bin/g
我正在尝试使用 gulp-rev、gulp-rev-replace 和 gulp-rev-css-url 重写对我的版本图像文件的引用。 我已设法修改文件并将 list 与以下 gulp 代码合并:
尝试创建一个 gulp 任务,通过 LESS 通过管道传输来自不同文件夹的一堆文件,然后将它们输出到基于原始源的文件夹。考虑这个文件夹结构: Project +-- /Module_A | +-
我在终端上的项目文件夹中,并且: 如果我执行: gulp -v 我得到: [15:47:15] CLI version 3.9.0 [15:47:15] Local version 3.9.
设置很简单: gulp.task('rev-js', function() { return gulp.src('/js/main.js, {base: '.'}) .pipe(ne
我有两个任务,B 依赖于 A。 任务A需要循环一个数组,然后执行gulp.dest,但似乎B会在A完成之前执行。 A 所做的就是加载所有 html,并将每个 html 注入(inject)到 temp
我尝试在工作流程中将 gulp-data 与 gulp-jade 结合使用,但收到与 gulp-data 插件相关的错误。 这是我的 gulpfile.js var gulp = require('g
编辑:有没有办法清理这段代码? 任务.咖啡 # Watch pages gulp.task 'jade', -> # Watch index gulp.src('src/jade/index.
这可能听起来很愚蠢,但请耐心等待。我遇到了麻烦。 我正在开发一个使用 Grunt 来编译和构建其发行版的项目。但是,它使用另一个名为 prism 的库,您可以在 http://prismjs.com
我有一个简单的 less 任务的 gulp 工作流程,如下所示: gulp.task('less', function() { gulp.src(source_less) .p
我有一个 gulp 工作流程,一切都运行良好,但似乎它只适用于最上面的文件,例如:public/index.html,但如果我想使用 public/products/item.html,gulp-da
我想使用 gulp-useref 将我所有的 JavaScript 文件连接成一个。 在我的 JavaScript 文件中,我混合了pre-minified 和non-minified 文件。 我只想
我是一名优秀的程序员,十分优秀!