Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS/Typescript/grunt开发工作流_Javascript_Node.js_Gruntjs_Typescript - Fatal编程技术网

Javascript NodeJS/Typescript/grunt开发工作流

Javascript NodeJS/Typescript/grunt开发工作流,javascript,node.js,gruntjs,typescript,Javascript,Node.js,Gruntjs,Typescript,我目前正在尝试使用NodeJS、typescript和Grunt来建立一个良好而高效的开发环境。我考虑了以下项目结构: 我的项目 客户 解放党 index.html 服务器 路线 app.ts 现在我想使用Grunt实时编译我的*.ts文件。问题是我需要编译带有“-module amd”标志的客户端源代码和带有“-module commonjs”标志的服务器端源代码。有没有什么好方法可以实现这样的目标?我想到了一个类似于以下文件的gunt文件,但它不起作用: grunt.init

我目前正在尝试使用NodeJS、typescript和Grunt来建立一个良好而高效的开发环境。我考虑了以下项目结构:

  • 我的项目
    • 客户
      • 解放党
      • index.html
    • 服务器
      • 路线
      • app.ts
现在我想使用Grunt实时编译我的*.ts文件。问题是我需要编译带有“-module amd”标志的客户端源代码和带有“-module commonjs”标志的服务器端源代码。有没有什么好方法可以实现这样的目标?我想到了一个类似于以下文件的gunt文件,但它不起作用:

grunt.initConfig({
    ts: {
        devServer: {
            src: ['server/**/*.ts'],
            watch: 'server',
            options: {
                module: 'commonjs',
                removeComments: false
            }
        },
        devClient: {
            src: ['client/**/*.ts'],
            watch: 'client',
            options: {
                module: 'amd',
                removeComments: false
            }
        }
    }
});
grunt.registerTask('default', ['ts:devServer', 'ts:devClient']);
编辑:使用此配置,只有devServer任务正在运行,并且将开始监视服务器文件夹。因此,它从未到达客户端任务,因此未检测到客户端更改。我希望这两个文件夹都能被监视,但使用不同的编译器选项进行编译(客户机文件夹使用amd,服务器文件夹使用commonjs)


欢迎提供任何意见或提示,谢谢

根据我对grunt的一点经验,我可以向您推荐以下代码:

grunt.initConfig({
        grunt.initConfig({
    ts: {
        devServer: {
            src: ['server/**/*.ts'],
           options: {
               module: 'commonjs',
               removeComments: false
           }
        },
       devClient: {
              src: ['client/**/*.ts'],
              options: {
                module: 'amd',
                removeComments: false
             }
        }
    },

    tsCompileTasks : {
            client: {
                    //what will you do for convert client ts
            },
            server: {
                    //what will you do for convert server ts
            }
    } 

    watch : {
             server: {
                    files: "<%= ts.devServer.src %>",
                    tasks: ["tsCompileTasks:server"],
                    options : "<%= ts.devServer.options %>"

             }
             client: {
                    files: "<%= ts.devClient.src %>",
                    tasks: ["tsCompileTasks:client"],
                    options : "<%= ts.devClient.options %>"
    }
}
});

grunt.registerTask('default', ['watch:server', 'watch:client']);
grunt.initConfig({
grunt.initConfig({
ts:{
开发服务器:{
src:['server/***/*.ts'],
选项:{
模块:“commonjs”,
removeComments:false
}
},
开发客户:{
src:['client/***/.ts'],
选项:{
模块:“amd”,
removeComments:false
}
}
},
t组合任务:{
客户:{
//您将如何转换客户端ts
},
服务器:{
//您将如何转换服务器ts
}
} 
观察:{
服务器:{
文件:“”,
任务:[“tsCompileTasks:server”],
选项:“
}
客户:{
文件:“”,
任务:[“tsCompileTasks:client”],
选项:“
}
}
});
registerTask('default',['watch:server','watch:client']);
1/。我认为registerTask有两个参数:(name,[watchArray])

2/.In watch:定义监视文件,如果监视文件已更改,将调用任务

因此,您应该按原样输入“watch”配置。请在此处检查其参数:


对不起,我的英语不好,解释也不好。

那它怎么办?你期望得到什么,你实际得到了什么?你不能有两个grunt ts监视任务。你只能有一个监视任务。下面是一个监视服务器和客户端文件的配置示例:非常感谢basarat。这个fullstack示例看起来与thin完全一样我一直在寻找的g。我会尽快测试它。遗憾的是,我无法将该评论标记为答案:)