webpack gl-matrix 作为外部

webpack gl-matrix as an external

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

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

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(我的库)

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');
externals: {
    'gl-matrix': {
      commonjs: 'gl-matrix',
      commonjs2: 'gl-matrix',
      amd: 'gl-matrix'
    }
}

外部字典名称应与库名称匹配

  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 attr 指向它自己,所以在根字段中使用 'window' 是更好的选择,它不需要声明不再是统一变量。