vue-cli中 'vue$'配置的别名问题

在脚手架当中我们总能看到 'vue$'配置了别名'vue/dist/vue.esm.js'
alias: {

  'vue$': 'vue/dist/vue.esm.js',
  '@': resolve('src')

}

module: {

rules: [
  ...(config.dev.useEslint ? [createLintingRule()] : []),
  {
    test: /\.vue$/,
    loader: 'vue-loader',
    options: vueLoaderConfig
  }]

}

但是我们实际引用vue的时候都是 import Vue from 'vue'并没有走这个别名
而vue的npm包中的package.json 中 "main": "dist/vue.runtime.common.js", 默认是走vue.runtime.common.js

所以问题来了 alias 中的 'vue$': 'vue/dist/vue.esm.js', 作用是什么呢???

阅读 5.8k
1 个回答

resolve-alias
这个是 webpack.rosolve.alias 的文档, vue$后面的 $代表精确匹配

运行时 + 编译器 vs. 只包含运行时
这个 vue 文档, 是为什么要写 'vue$': 'vue/dist/vue.esm.js',需要完整的含 编译器vue 版本时才写

但是我们实际引用vue的时候都是 import Vue from 'vue'并没有走这个别名

这个只要配置 alias, webpack 在寻找依赖的时候会判断 是否别名,肯定会走 vue$

module.rulestest: /\.vue$/,这个 $ 是正则的 $,跟 alias$ 不是一回事

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题