node.js的commonJS和reactjs的es6存在多个tsconfig.json问题
typescript的当前文件夹结构:node.js的commonJS和reactjs的es6存在多个tsconfig.json问题,node.js,reactjs,typescript,typescript2.0,tsconfig,Node.js,Reactjs,Typescript,Typescript2.0,Tsconfig,typescript的当前文件夹结构: ts_dev --client *components.tsx *tsconfig.json --server *server.ts *tsconfig.json --share *utility.ts Node.js服务器需要使用commonjs模块,而es2015用于客户端组件。我将客户端和服务器使用的共享文件夹放在服务器目录下,因为它需要commonJS用于Node.js 服务器中的tsconfig.json: {
ts_dev
--client
*components.tsx
*tsconfig.json
--server
*server.ts
*tsconfig.json
--share
*utility.ts
Node.js服务器需要使用commonjs
模块,而es2015
用于客户端组件。我将客户端和服务器使用的共享文件夹放在服务器目录下,因为它需要commonJS
用于Node.js
服务器中的tsconfig.json:
{
"compilerOptions": {
"module": "commonJS",
"target": "es2015",
"moduleResolution": "node",
"outDir": "../../src",
"lib": ["es6", "dom"],
"types": ["reflect-metadata","system"],
"jsx": "react"
},
"exclude": [
"node_modules",
]
}
客户端中的tsconfig.json:
{
"compilerOptions": {
"module": "es2015",
"target": "es2015",
"moduleResolution": "node",
"outDir": "../../src",
"lib": ["es6", "dom"],
"types": ["reflect-metadata","system"],
"jsx": "react"
},
"exclude": [
"node_modules",
]
}
然而,我发现
share
中的脚本总是在es6(使用导出、导入等)中编写,而不是在commonJS中编写,这破坏了我的服务器。我怀疑这是由客户端中的tsconfig造成的。如何解决此问题?我建议在带有文件globs的每个tsconfig.json
文件中使用include
选项,以限制通过每个配置文件编译的文件
我通过使用不同的outDirs
解决了我的一个类似问题。我认为发生在您身上的是,您编译了两次源文件,最后一次将JS编译到es2015
,覆盖了第一次。换句话说,首先编译服务器
版本,然后编译客户端
版本并覆盖它,因为输出将进入同一目录。等等,目录相同,是的,但文件名不同。那箱子里是什么?如果我想将一个*.ts
文件编译成commonjs
,然后再编译成web(即none
module)?@vintproykt你能在相应的include部分使用文件globs来匹配你想要包含在特定配置文件中的文件名吗?我最后得到了一个不明显的(起初)结论是,我需要在独立的存储库中分离这些目录,并处理进一步项目的monorepo体系结构。它现在是我作为非模块和VisualStudio代码扩展所需要的应用程序,它们不再有编译冲突了!