@icanvas/webpack
Version:
这是icanvas的默认webpack打包配置
58 lines (56 loc) • 1.86 kB
JavaScript
const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = (ENV, Config) => {
if (process.env.npm_config_debug) console.log('配置', ENV, Config);
const BasePath = process.cwd();
return merge(
require('./libs/base.js')(ENV, Config),
require('./libs/define.js')(ENV, Config),
{
plugins: [
new webpack.DefinePlugin({
'ENV.LocalResource': webpack.DefinePlugin.runtimeValue(function() {
return JSON.stringify(require('./utils/p2j.js')('./resource/local'));
}, true),
'ENV.RemoteResource': webpack.DefinePlugin.runtimeValue(function() {
return JSON.stringify(require('./utils/p2j.js')('./resource/remote'));
}, true),
}),
],
},
require('./libs/name.js')(ENV, Config),
require('./libs/zip.js')(ENV, Config),
require('./libs/resource.js')(ENV, Config, require('./utils/p2j.js')('./resource/remote')),
require('./libs/wxgame.js')(ENV, Config),
{
output: {
filename: '[name]',
path: path.resolve(BasePath, '..', ENV.target),
globalObject: 'this',
},
entry: (function(OpenDataEntry, Res = {}) {
Res['game.js'] = path.resolve(BasePath, 'src', 'index.js');
if (OpenDataEntry) Res[OpenDataEntry + '/index.js'] = path.resolve(BasePath, 'src.open', 'index.js');
return Res;
})(require('./utils/attr.js')(Config, 'game.json', 'openDataContext')),
devServer: {
contentBase: path.resolve(BasePath, '..', ENV.target),
host: '0.0.0.0', //可以通过localhost访问
inline: true,
hot: true,
},
plugins:
Config.core == 'web'
? [
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.resolve(__dirname, 'index.ejs'),
chunks: ['game.js'],
}),
]
: [],
},
);
};