如何使用 Nuxt 2 转译 node_modules 中的依赖项?

Mic*_*umo 5 javascript vue.js babeljs nuxt.js nuxt-edge

我读过有关使用node_modulesNuxt 进行转译的问题,但据说新的 Nuxt 2 已经通过文件transpile中的选项解决了这个问题nuxt.config.js

https://nuxtjs.org/api/configuration-build/#transpile

这是我所拥有的:

export default {
  router: {
    base: '/',
  },
  build: {
    transpile: [
      'choices.js',
      'lazysizes',
      'swiper',
      'vee-validate'
    ],
    extractCSS: true
  },
  srcDir: 'src/',
  performance: {
    gzip: true
  },
  render: {
    compressor: {
      threshold: 100
    }
  },
  dev: false
}
Run Code Online (Sandbox Code Playgroud)

为了方便阅读,我删除了一些不相关的内容。

当我运行npm run build( nuxt build) 时,编译后的 JS 文件包含对 es6 和 es7 代码的引用,例如constletvar

我已将此问题隔离为来自Swiper。它似乎在内部依赖于一个名为 Dom7 的东西,而这个东西似乎导致了这个问题。

如果可能的话,我想将这些node_modules依赖项编译为 es5。我不确定我当前的设置实际上在这方面做了什么。

我相信 Nuxt 用于vue-appBabel,但我什至尝试了以下方法但没有成功:

babel: {
  presets: [
    '@babel/preset-env'
  ],
  plugins: [
    '@babel/plugin-syntax-dynamic-import'
  ]
}
Run Code Online (Sandbox Code Playgroud)

那里也没有太多欢乐。最终版本中没有什么不同。

我正在使用 Nuxt2.1.0

任何帮助表示赞赏。谢谢!

nja*_*jam 8

您还需要转译 Dom7,因此 Nuxt 配置应该具有:

build: {
    transpile: [
      'swiper',
      'dom7',
    ],
}
Run Code Online (Sandbox Code Playgroud)

  • 您介意添加一些关于“为什么”这是必要的吗? (4认同)