将worker-loader与vue-cli和webpack一起使用

时间:2017-04-09 13:42:12

标签: vue.js babeljs web-worker

我尝试使用vue-cli webpack安装设置worker-loader,为构建/配置提供以下文件结构:

-build
--vue-loader.conf.js
--webpack.base.conf.js
--other build files...
-config
--index.js
--dev.env.js
--other config files...

然后我用

安装了worker-loader
npm install worker-loader --save-dev

然后我尝试使用

来使用worker.js
require('worker-loader!my-worker.js');

但它没有被babel加载,它被用作vue-cli webpack版本的默认值

然后我尝试使用以下配置更新webpack.base.conf.js:

module: {
rules: [
  {
    test: /\.(js|vue)$/,
    loader: 'eslint-loader',
    enforce: 'pre',
    include: [resolve('src'), resolve('test')],
    options: {
      formatter: require('eslint-friendly-formatter')
    }
  },
  {
    test: /\.vue$/,
    loader: 'vue-loader',
    options: vueLoaderConfig
  },
  {
    test: /\.js$/,
    loader: 'babel-loader',
    include: [resolve('src'), resolve('test')]
  },
  {
    test: /\worker\.js$/,
    loader: 'worker-loader',
    include: [resolve('src'), resolve('test')]
  },
  {
    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('img/[name].[hash:7].[ext]')
    }
  },
  {
    test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
    }
  }
]
}

但是我的工作人员只能被babel读取并作为常规js文件导入,而worker-loader也不会做任何事情。

那么如何正确配置?

1 个答案:

答案 0 :(得分:1)

Woops,我确实发现了我的错误。

我尝试用:

加载worker-loader
import myWorker from 'worker-loader?./myworker'
let worker = new Worker(myWorker);

所以解决方案就是使用:

import myWorker from 'worker-loader?./myworker'
let worker = new myWorker;

所以现在它起作用了: - )