2

我正在使用咕噜声:

  "dev-build": {
                src: ["src/**/*.ts", "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"],
                    outDir: "artifacts/dev",
                    watch: "src/**/*",
                    options: {
                        // comments: true,
                  //      baseDir: 'src/',
                        module: "amd",
                        target: "es5",
                        sourceMap: true,
                        declaration: true, //inlineSourceMap :true,
                        //emitDecoratorMetadata:true,
                        //experimentalDecorators:true,

                    }               

            }

一切都编译得很好:

“TypeScript 编译完成:256 个 TypeScript 文件需要 8.97 秒。”

但是在更改文件(添加换行符)而不更改代码之后,编译会与手表一起中断:

### changed  >>src/FxsPortal/FxsBaseItemViewModel.ts
Compiling...
### Fast Compile >>src/FxsPortal/FxsBaseItemViewModel.ts
Using tsc v1.6.2
C:/dev/AscendXYZ Portal/src/FxsPortal/FxsBaseItemViewModel.ts(2,21): error TS2307: Cannot find module 'knockout'.

我知道没有错误,因为我可以手动编译它。我似乎不明白为什么当 ts-grunt 的手表触发时它不起作用。

4

2 回答 2

1

作为参考,我只想分享我是如何使用外部手表解决这个问题的。

 watch: {
            devBuildWatch: {
                files: ['src/**/*'],
                tasks: ['ts:devBuild'],
                options: {
                    spawn: false,
                },
            }
        },

和一个 onchange 动作

 var changedFiles = {};

    var onChange = grunt.util._.debounce(function () {
        grunt.config('ts.devBuild.src', Object.keys(changedFiles).concat([ "typings/vendors.d.ts","typings/tsd.d.ts", "!libs/**/*.ts"]));
        changedFiles = Object.create(null);
    }, 50);

    grunt.event.on('watch', function (action, filepath) {
        changedFiles[filepath] = action;
        onChange();
    });
于 2015-10-13T07:25:37.160 回答
0

我似乎不明白为什么当 ts-grunt 的手表触发时它不起作用。

可以安全地忽略这些错误。他们出现的原因是因为 grunt 只是tsc从命令行驱动并且只传递单个文件。

更多的

如果你真的很在意,你可以使用reference标签来引入全局.d.ts文件(不是通过 进来的文件import/require)。但我强烈建议不要这样做。您应该打开一个 IDE,它会给您带来真正的错误(...cough atom-ts ...

于 2015-10-12T22:32:39.573 回答