Npm 如何在项目之间共享webpack.config代码段?

Npm 如何在项目之间共享webpack.config代码段?,npm,webpack-2,Npm,Webpack 2,我有几个具有非常相似的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.Modul

我有几个具有非常相似的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的项目的节点_模块中搜索包含的依赖项

我试图通过在resolve webpack.config部分添加以下内容来实现这一点,但这没有帮助:

模块:[path.resolve(\uuuu dirname,“node\u modules”),“node\u modules”]


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

我通过将必需的root dir作为参数传递到公共webpack config来解决它,并使用它来更改用于查找插件和其他内容的u 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');
 ....

}

您是否找到了解决方案,我也有同样的要求,我一直在四处寻找,几乎什么都没有是的,正好是我两周前做的,忘了在这里回答,我现在会的。覆盖
\u dirname
确实有帮助。谢谢