webpack gl-matrix作为外部

时间:2017-09-22 00:53:38

标签: webpack gl-matrix

我正在使用gl-matrix作为依赖项编写库。我正在使用webpack输出src,并希望从我的代码中排除gl-matrix部分,但将其列为依赖项。

但事实证明我只能将gl-matrix打包到lib中,或者有错误说我的lib中未定义像vec3这样的gl-matrix对象。有什么想法吗?

webpack.config.js

module.exports = {
  //...
  output: {
    filename: 'minimal-gltf-loader.js',
    path: path.resolve(__dirname, 'build'),
    library: 'MinimalGLTFLoader',
    libraryTarget: 'umd'
  },
  externals: {
    glMatrix: {
      commonjs: 'gl-matrix',
      commonjs2: 'gl-matrix',
      amd: 'gl-matrix'
    }
  }
}

minimal-gltf-loader.js(我的lib)

import {vec3, vec4, quat, mat4} from 'gl-matrix';
//...
export { MinimalGLTFLoader };

应用

import {vec3, vec4, quat, mat4} from 'gl-matrix';
var mgl = require('../build/minimal-gltf-loader.js');

2 个答案:

答案 0 :(得分:0)

externals: {
    'gl-matrix': {
      commonjs: 'gl-matrix',
      commonjs2: 'gl-matrix',
      amd: 'gl-matrix'
    }
}

外部字典名称应与lib的名称匹配

答案 1 :(得分:0)

  externals: [
    {
      'gl-matrix': {
        root: 'window',
        commonjs: 'gl-matrix',
        commonjs2: 'gl-matrix',
        amd: 'gl-matrix'
      }
    }
  ]

如果通过脚本标签导入gl-matrix,它将是几个全局变量,例如vec3mat4,而不是gl-matrix.vec3gl-matrix.mat4。 因此,您可以将它们设置为一个变量,然后将此变量用作webpack外部根配置。

然后我发现window对象具有指向自己的window属性,因此在根字段中使用'window'是一个更好的选择,它不再需要声明一个统一变量了