是否可以使用webpack从es6编译到commonjs

是否可以使用webpack从es6编译到commonjs,webpack,commonjs,es6-modules,Webpack,Commonjs,Es6 Modules,问题如标题所示-如果您已将源代码编写为es6模块(import…from…),那么您是否可以使用Webpack将此源代码编译回node.js样式的commonjs模块(const…=require(…)),当然可以。下面是我的webkack.config.js,它完全按照您的要求执行,我们维护一个遗留项目: var path = require("path"); var webpack = require('webpack'); var HardSourceWebpackPlugin = req

问题如标题所示-如果您已将源代码编写为es6模块(
import…from…
),那么您是否可以使用Webpack将此源代码编译回node.js样式的commonjs模块(
const…=require(…)
),当然可以。下面是我的webkack.config.js,它完全按照您的要求执行,我们维护一个遗留项目:

var path = require("path");
var webpack = require('webpack');
var HardSourceWebpackPlugin = require("hard-source-webpack-plugin");
module.exports = {
    node: { fs: 'empty' },
    entry: {
        polyfill: "./wwwroot/js/helpers/polyfill.js",
        budget: ["babel-polyfill", "./wwwroot/js/pages/budget.js"],
        sirtflow: ["babel-polyfill", "./wwwroot/js/pages/sirtflow.js"],
        apps: ["babel-polyfill", "./wwwroot/js/pages/apps.js"],
        settings: ["babel-polyfill", "./wwwroot/js/pages/settings.js"]
    },
    output: {
        publicPath: "/js/",
        path: path.join(__dirname, "/wwwroot/js/webpack/"),
        filename: "[name].js"
    },
    resolve:
    {
        alias: {
            'handlebars': 'handlebars/dist/handlebars.js'
        }
    },
    devtool: false,
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: [
                            ['env', {
                                modules: false,
                                useBuiltIns: 'usage'
                            }]
                        ]
                    }
                }
            }
        ]
    },
    plugins: [
        new HardSourceWebpackPlugin()
    ]
};

在这里,我为我想要输出的每个模块使用一个入口点,并使用带有“env”预设的babel loader。这个预设正是您在使用最新和最好的JS编写并希望使用传统(UMD)格式时想要使用的:

您当然可以。下面是我的webkack.config.js,它完全按照您的要求执行,我们维护一个遗留项目:

var path = require("path");
var webpack = require('webpack');
var HardSourceWebpackPlugin = require("hard-source-webpack-plugin");
module.exports = {
    node: { fs: 'empty' },
    entry: {
        polyfill: "./wwwroot/js/helpers/polyfill.js",
        budget: ["babel-polyfill", "./wwwroot/js/pages/budget.js"],
        sirtflow: ["babel-polyfill", "./wwwroot/js/pages/sirtflow.js"],
        apps: ["babel-polyfill", "./wwwroot/js/pages/apps.js"],
        settings: ["babel-polyfill", "./wwwroot/js/pages/settings.js"]
    },
    output: {
        publicPath: "/js/",
        path: path.join(__dirname, "/wwwroot/js/webpack/"),
        filename: "[name].js"
    },
    resolve:
    {
        alias: {
            'handlebars': 'handlebars/dist/handlebars.js'
        }
    },
    devtool: false,
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: [
                            ['env', {
                                modules: false,
                                useBuiltIns: 'usage'
                            }]
                        ]
                    }
                }
            }
        ]
    },
    plugins: [
        new HardSourceWebpackPlugin()
    ]
};
在这里,我为我想要输出的每个模块使用一个入口点,并使用带有“env”预设的babel loader。当您使用最新和最好的JS编写并希望以旧版(UMD)格式为目标时,此预设正是您想要使用的: