0

一般来说,我是 Webpacker 和 Rails 的新手。我最近开始使用 Webpacker 来捆绑 React 组件。由于应用程序的一部分仍然使用资产管道,一些依赖项仍然存储在 中vendor/assets/javascript,并且可以作为全局变量访问。Webpack 包将这些依赖项声明为外部依赖项,并且在为应用程序提供服务时,一切正常,因为 Rails 服务于依赖项,然后由包提取。现在我想开始使用 jsdom 之类的东西来测试这个包。我正在使用具有与开发相同配置的 mocha-webpack。

在这种情况下如何加载外部依赖项?如果我理解正确,捆绑包构建得很好,但是当测试运行时,依赖项没有加载。

4

2 回答 2

0

resolve.alias我在测试模式下使用了 webpack 的特性,externals开发/生产模式下使用了这个特性。

基本上,根据模式进行webpack.config.js检查process.env.NODE_ENV并返回不同的设置。

const path = require('path');

const isTest = process.env.NODE_ENV === 'test';

let resolve;
let externals = { jquery: 'jquery ' };
if (isTest) {
    externals = {};

    resolve = {
        alias: {
            // you may have to fiddle around with this path, from the point of view of where jquery is imported
            jquery: './tests/helpers/fakeJQuery.js',
        }
    };
}

module.exports = {
    // ...
    resolve,
    externals,
    // ...
};

vue.js 的一个例子可以在这里看到: https ://stackoverflow.com/a/68569055/289203

于 2021-07-29T01:39:28.607 回答
0

考虑使用另一个webpack.config.js仅用于测试构建,例如创建一个不使用外部的webpack.config.test.js ,但将所有供应商文件捆绑为 npm 依赖项。

于 2018-04-24T14:01:14.387 回答