gpt4 book ai didi

npm - 如何在项目之间共享 webpack.config 片段?

转载 作者:行者123 更新时间:2023-12-04 16:09:36 25 4
gpt4 key购买 nike

我有几个具有非常相似的 webpack.config 文件的 webpack 配置。我喜欢将 webpack.config 部分放在一个共享模块中(我包含带有“npm 链接”的共享模块),但这不起作用,因为找不到依赖项,例如“webpack”,因为它是它遇到的第一个依赖项.

17 07 2017 14:49:32.694:ERROR [config]: Invalid config file!
Error: Cannot find module 'webpack'
at Function.Module._resolveFilename (module.js:470:15)

第一个 webpack.config 行:
const webpack = require('webpack');
const path = require('path');
....

如何指示 webpack 在包含 webpack.config 的项目的 node_modules 中搜索包含的依赖项?

我试图通过将以下内容添加到 resolve webpack.config 部分来实现这一点,但这无济于事:

modules: [path.resolve(__dirname, "node_modules"), "node_modules"]



我认为它不是由 webpack.config 本身使用,而是由 webpack.config 处理的 JS 代码使用。

最佳答案

我通过将所需的根目录作为参数传递给通用 webpack 配置来解决它,并使用它来更改用于查找插件和其他内容的 __dirname 变量。

在代码中:
webpack.config.js:

const path = require('path');
const loader = require('lodash/fp');
const common = require('bdh-common-js/etc/webpack/webpack.config.common');

module.exports = function (env) {
if (env === undefined) {
env = {};
}
env.rootdir = __dirname; // Add the root dir that can be used by the included webpack config.

const result = loader.compose(
function () {
return common(env)
}
// Any other "fragments" go here.
)();

// Customize the webpack config:
result.entry = {
entry: ['./src/entry.js', './src/js/utils.js'],
}
result.resolve.alias.Context = path.resolve(__dirname, 'src/js/context');
...... more stuff..
return result;
}

以及接收参数的常见 webpack.config 部分:
module.exports = function (env) { 
if (env !== undefined) {
if (env.rootdir !== undefined) {
__dirname = env.rootdir;
}
}
....
const node_modules = path.resolve(__dirname, 'node_modules');
const webpack = require(node_modules + '/webpack');
const CleanWebpackPlugin = require(node_modules + '/clean-webpack-plugin');
....

}

关于npm - 如何在项目之间共享 webpack.config 片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45144918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com