first commit
This commit is contained in:
144
admin/webpack/webpack.config.js
Normal file
144
admin/webpack/webpack.config.js
Normal file
@@ -0,0 +1,144 @@
|
||||
const Encore = require('@symfony/webpack-encore');
|
||||
const path = require('path');
|
||||
const process = require('process');
|
||||
const WpjResolver = require('../../web/common/webpack/WpjResolver');
|
||||
const webpack = require('webpack');
|
||||
|
||||
const rootDir = process.cwd();
|
||||
|
||||
Encore
|
||||
// directory where compiled assets will be stored
|
||||
.setOutputPath('admin/static/build/')
|
||||
// public path used by the web server to access the output path
|
||||
.setPublicPath('/admin/static/build/')
|
||||
|
||||
.addEntry('icons', '@assets/entrypoints/icons.js')
|
||||
.addEntry('app', '@assets/entrypoints/app.js')
|
||||
.addEntry('board', '@assets/entrypoints/board.js')
|
||||
.addEntry('window', '@assets/entrypoints/window.js')
|
||||
.addEntry('list', '@assets/entrypoints/list.js')
|
||||
.addEntry('listEdit', '@assets/entrypoints/listEdit.js')
|
||||
.addEntry('translate', '@assets/entrypoints/translate.js')
|
||||
|
||||
.enableSourceMaps(true)
|
||||
// enables hashed filenames (e.g. app.abc123.css)
|
||||
.enableVersioning(Encore.isProduction())
|
||||
.disableSingleRuntimeChunk()
|
||||
.enableReactPreset()
|
||||
|
||||
// uncomment if you use TypeScript
|
||||
.enableTypeScriptLoader()
|
||||
|
||||
// uncomment if you use Sass/SCSS files
|
||||
.enableSassLoader(options => {
|
||||
// https://github.com/sass/node-sass#options
|
||||
options.sassOptions.includePaths = ['common/static/compass/', 'common'];
|
||||
options.implementation = require('sass');
|
||||
})
|
||||
.enablePostCssLoader(options => {
|
||||
options.postcssOptions = {
|
||||
// the directory where the postcss.config.js file is stored
|
||||
config: 'admin/webpack/'
|
||||
};
|
||||
}).addPlugin(
|
||||
new webpack.DefinePlugin({
|
||||
ADMIN: true
|
||||
})
|
||||
)
|
||||
.configureDevServerOptions(options => {
|
||||
options.server = {
|
||||
type: 'https',
|
||||
options: {
|
||||
cert: '/etc/ssl/cert.pem',
|
||||
key: '/etc/ssl/key.pem',
|
||||
},
|
||||
};
|
||||
options.hot = true;
|
||||
options.allowedHosts = 'all';
|
||||
options.host = '0.0.0.0';
|
||||
options.client = {
|
||||
overlay: true,
|
||||
};
|
||||
options.proxy = {
|
||||
secure: false,
|
||||
context: () => true,
|
||||
target: 'https://localhost'
|
||||
};
|
||||
});
|
||||
|
||||
if (Encore.isDevServer()) {
|
||||
Encore.disableCssExtraction();
|
||||
} else {
|
||||
//Encore.cleanupOutputBeforeBuild();
|
||||
}
|
||||
|
||||
const EncoreProxy = new Proxy(Encore, {
|
||||
get: (target, prop) => {
|
||||
if (prop === 'getWebpackConfig') {
|
||||
return (...parameters) => {
|
||||
const config = target[prop](...parameters);
|
||||
|
||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||
|
||||
const loaders = [];
|
||||
|
||||
if (!Encore.isDevServer()) {
|
||||
loaders.push(MiniCssExtractPlugin.loader);
|
||||
} else {
|
||||
loaders.push('style-loader');
|
||||
}
|
||||
|
||||
// config.stats = 'verbose';
|
||||
// config.resolve.modules = [path.join(rootDir, 'engine/node_modules'), path.join(rootDir, 'node_modules')];
|
||||
// config.resolveLoader = config.resolve;
|
||||
config.module.rules.push({
|
||||
test: /\.font\.js/,
|
||||
use: [
|
||||
...loaders,
|
||||
{
|
||||
loader: 'css-loader',
|
||||
},
|
||||
{
|
||||
loader: 'webfonts-loader',
|
||||
options: {
|
||||
publicPath: '/admin/static/build/'
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
const WpjResolver = require('./WpjResolver.js');
|
||||
|
||||
config.resolve.plugins = [
|
||||
new WpjResolver({
|
||||
rule: /^@assets/,
|
||||
paths: {
|
||||
common: 'admin/webpack/assets/'
|
||||
}
|
||||
}),
|
||||
new WpjResolver({
|
||||
rule: /^@static/,
|
||||
paths: {
|
||||
common: 'admin/static/'
|
||||
}
|
||||
}),
|
||||
new WpjResolver({
|
||||
rule: /^@hack/,
|
||||
paths: {
|
||||
shop: './admin/static/build' + path.resolve(__dirname, 'assets/fonts/')
|
||||
}
|
||||
})
|
||||
];
|
||||
|
||||
return config;
|
||||
};
|
||||
}
|
||||
|
||||
return (...parameters) => {
|
||||
const res = target[prop](...parameters);
|
||||
return (res === target) ? EncoreProxy : res;
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = EncoreProxy.getWebpackConfig();
|
||||
Reference in New Issue
Block a user