1

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

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

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'
    }
  }
}

最小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');
4

2 回答 2

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

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

然后我发现window对象有window指向它自己的属性,所以在根字段中使用“窗口”是一个更好的选择,它不再需要声明一个联合变量。

于 2018-09-19T07:47:53.667 回答
0
externals: {
    'gl-matrix': {
      commonjs: 'gl-matrix',
      commonjs2: 'gl-matrix',
      amd: 'gl-matrix'
    }
}

external dict name should match name of the lib

于 2017-09-22T16:39:53.453 回答