如何在Vue.js中排除文件(例如配置文件)?

时间:2018-10-28 18:58:05

标签: vue.js webpack

我尝试过:

chainWebpack: config => {
    config.merge({
        module: {
            rules: [{
                test: /\.jsx?$/,
                exclude: {
                    exclude: [path.resolve(__dirname, "public/my-config.js")]
                }
            }]
        }
    })
}

config.module.rule('js')
  .exclude({
    exclude: path.resolve(__dirname, "public/my-config.js")
  })

但这不起作用。

我想导入public/my-config.js中带有脚本标签的pages/index.html或仅导入import { config1, config2 } from '../public/my-config'

虽然我可以使用externals在webpack中不包含模块,但是使用Vue.js不太直观。

我必须在my-config.js提供dist/,以便可以对其进行编辑。

2 个答案:

答案 0 :(得分:2)

参考:https://github.com/vuejs/vue-cli/issues/2231#issuecomment-413441633

尝试一下,简单得多:

module.exports = {
  chainWebpack: config => {
    config.plugin('copy').tap(([options]) => {
      options[0].ignore.push('api/**/*')
      return [options]
    })
  }
}

答案 1 :(得分:0)

参考:

我在vue.config.js中写的内容:

const path = require("path");

module.exports = {
    baseUrl: ".",
    chainWebpack: config => {
        config.plugin('copy').tap((args) => [[
              {
                from: '/path/to/my_project/public',
                to: '/path/to/my_project/dist',
                toType: 'dir',
                ignore: [
                  'index.html',
                  '.DS_Store',
                  'config.data.js'
                ]
              }
          ]]
        );
    }
}

我使用了$ vue inspect > output.js,然后检查了output.js文件中config.plugin('copy')使用了哪些参数,而该参数恰好是new CopyWebpackPlugin的实例。