[英]Type-checking of Vue w/ Typescript but w/o Webpack/ts-loader
自2018年8月以來,可以使用Babel
編譯Typescript
代碼並將類型檢查作為單獨的過程進行。
我想知道是否可以對不帶Webpack
/ ts-loader
<script lang="ts">
部分進行自定義文件格式(如.vue
類型檢查? (我認為在這種情況下,Typescript需要支持文件預處理,以便能夠消化不同的文件格式)。
現在,我只需要使用ts-loader
維護一個單獨的webpack配置並編譯Vue.js項目,盡管我需要做的只是對它進行類型檢查。 因此,這種方法看起來更像是hack和開銷。
在Webpack中使用ts-loader
是完全沒問題的。 我們的Vue.js是非常大規模的,我們有多個SPA和Webpack作為我們的捆綁器。 你真的不需要為ts-loader提供單獨的配置。 看看我們的Webpack配置(ts-loader的三個實例):
const rules = [
{
test: /\.tsx?$/,
loader: 'ts-loader',
include: [...PATHS.shared, path.join(__dirname, 'node_modules')],
options: {
transpileOnly: isDev,
appendTsSuffixTo: [/\.vue$/],
instance: 'common',
configFile: path.join(__dirname, 'tsconfig.json')
}
},
{
test: /\.tsx?$/,
loader: 'ts-loader',
include: [PATHS.app1],
options: {
transpileOnly: isDev,
appendTsSuffixTo: [/\.vue$/],
instance: 'app1',
configFile: path.join(PATHS.app1, 'tsconfig.json')
}
},
{
test: /\.tsx?$/,
loader: 'ts-loader',
include: [PATHS.app2],
options: {
transpileOnly: isDev,
appendTsSuffixTo: [/\.vue$/],
instance: 'app2',
configFile: path.join(PATHS.app2, 'tsconfig.json')
}
}
];
回到你的問題,我已經成功使用@babel/preset-typescript
.vue
但我們不使用.vue
文件,因為在處理.vue
文件時會出現問題 。 注意:在開發過程中,我們將transpileOnly
設置為false。
如果您可以切換到使用@Component
裝飾器的類語法並使用vue-template-loader ,那么您可以切換到使用Babel + TypeScript。 有一些令人討厭的驚喜,例如不支持const enums
,命名空間等。
注意:在
@babel/preset-typescript
上使用ts-loader
有其自身的優點。 與Webpack相結合,ts-loader
更具攻擊性。 如果您需要使用Vue.js鍵入JSX即TSX支持,那么babel路由更有意義。 如果使用的是.vue
文件,則沒有太大的區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.