babel7,babel-loader如何解析vue文件里的ts

ts-loader可通过配置appendTsSuffixTo: [/.vue$/],
那升级用babel7后怎么解析呢?
目前我的webpack是如下配置,但ts的类型注解解析不了
clipboard.png

阅读 10.2k
1 个回答
  • babel-loader 要支持typescript需要引入@babel/preset-typescript, 且应该配置allExtensions选项
  • vue文件需要通过vue-loader中转到babel

完整配置代码

const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');

module.exports = {
  mode: 'development',
  entry: './index.vue',
  output: {
    path: path.join(__dirname, './dist'),
    filename: 'bundle.js',
  },
  resolve: {
    extensions: ['.ts', '.tsx'],
  },
  module: {
    rules: [
      {
        test: /\.vue$/,                     // 处理vue文件,会将lang="ts"的代码,转交给babel-loader
        loader: 'vue-loader',
      },
      {
        test: /\.tsx?$/,
        loader: 'babel-loader',
        options: {
          presets: [
            '@babel/preset-env',
            [
              '@babel/preset-typescript',   // 引用Typescript插件
              {
                allExtensions: true,        // ?支持所有文件扩展名
              },
            ],
          ],
        },
      },
    ],
  },
  plugins: [
    // make sure to include the plugin!
    new VueLoaderPlugin(),
  ],
};

index.vue

<script lang="ts">
let a: number = 1;

console.log(a);
</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏