Javascript 如何从.js文件而不是webpack.config配置和运行webpack

Javascript 如何从.js文件而不是webpack.config配置和运行webpack,javascript,webpack,Javascript,Webpack,我正在根据用户输入创建动态生成的网页包模块 您可以在配置中指定文件夹或文件,并使用babel loader在其上运行webpack var path = require('path'); var webpack = require('webpack'); var CopyWebpackPlugin = require('copy-webpack-plugin'); var dir_js = path.resolve(__dirname, 'js'); var dir_html = path.

我正在根据用户输入创建动态生成的网页包模块

您可以在配置中指定文件夹或文件,并使用babel loader在其上运行webpack

var path = require('path');

var webpack = require('webpack');
var CopyWebpackPlugin = require('copy-webpack-plugin');

var dir_js = path.resolve(__dirname, 'js');
var dir_html = path.resolve(__dirname, 'html');
var dir_build = path.resolve(__dirname, 'build');

module.exports = {
    entry: path.resolve(dir_js, 'main.js'),
    output: {
        path: dir_build,
        filename: 'bundle.js'
    },
    devServer: {
        contentBase: dir_build,
    },
    module: {
        loaders: [
            {
                loader: 'babel-loader',
                test: dir_js,
            }
        ]
    },
    plugins: [
        // Simply copies the files over
        new CopyWebpackPlugin([
            { from: dir_html } // to: output.path
        ]),
        // Avoid publishing files when compilation fails
        new webpack.NoErrorsPlugin()
    ],
    stats: {
        // Nice colored output
        colors: true
    },
    // Create Sourcemaps for the bundle
    devtool: 'source-map',
};
然而,如果我想使模块动态,我不能使用静态配置文件。 所以我在谷歌上搜索了一下,我如何通过一些特定的配置直接从JS文件调用webpack。我发现

如果有选择权调用:

var webpack = require("webpack");    
// returns a Compiler instance
webpack({
    // configuration
}, function(err, stats) {
    // ...
});
所以我创建了一些非常简单的index.js:

var webpack = require('webpack');
webpack({
    entry: './main.js',
    output: {
        filename: 'bundle.js'
    }
}, function(err, stats) {
    // console.log(stats);
    console.log(err);
});
不幸的是,当我通过
node index.js
调用此文件时,甚至
console.log(err)
输出为
null
从这一点上说,我没有发现任何其他有用的东西


所以我希望如果这里有人有这方面的经验,可以告诉我我做错了什么。或者,也可以告诉我如何创建它的其他方法检查您的输入文件是否存在,如果存在,您的代码应该可以工作

我建议添加
console.log(stats.toString())。这样,您将获得一些额外的有用输出。即使没有错误

我删除了
main.js
,并从stats中获得了以下输出:

ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' ./main.js in <some dir>

通常,最好在网页包配置中使用完整路径,即使配置是动态的:

entry: path.resolve(__dirname, 'main.js');

(同样对于
output.filename

您确定
main.js
存在吗?这段代码对我来说没有问题。嘿@robertklep谢谢你的回答。是的,我肯定它存在。信息技术它与我调用()的index.js的格式相同,我没有使用node.js,这可能是原因。是的,我只使用node进行了测试。用
'./main.js'
代替
.\uu dirname+'/main.js'
。哈哈,我真不敢相信,这解决了我的问题。请把它作为答案让我标记:)嘿@Sebastian Sebald,谢谢你的提示。我砰砰的一声。就在几秒钟前,我注意到robertklep的回答,这让我的代码再次工作。谢谢@robertklep:)
entry: path.resolve(__dirname, 'main.js');