ÿØÿà JFIF ÿÛ „ ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /var/www/html/thietkeweb2/layout/default/node_modules/summernote/config/ |
const webpack = require('webpack'); const CopyPlugin = require('copy-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const ZipPlugin = require('zip-webpack-plugin'); const path = require('path'); const pkg = require('../package.json'); const { styles, languages } = require('./common'); const date = (new Date()).toISOString().replace(/:\d+\.\d+Z$/, 'Z'); const banner = ` Super simple WYSIWYG editor v${pkg.version} https://summernote.org Copyright 2013- Alan Hong and contributors Summernote may be freely distributed under the MIT license. Date: ${date} `; const minBanner = `Summernote v${pkg.version} | (c) 2013- Alan Hong and contributors | MIT license`; module.exports = { mode: 'production', performance: { maxEntrypointSize: 512000, maxAssetSize: 512000, assetFilter: (name) => { return name.endsWith('.js'); }, }, resolve: { roots: [path.resolve('./src')], }, entry: Object.fromEntries([ // entries for each style ...styles.map(style => [`${style.target}`, `./src/styles/${style.id}/summernote-${style.id}.js`] ), // ... and for minimized ...styles.map(style => [`${style.target}.min`, `./src/styles/${style.id}/summernote-${style.id}.js`] ), // entries for each language ...languages.map(lang => [`lang/${lang}`, `./src/lang/${lang}.js`] ), // ... and for minimized ...languages.map(lang => [`lang/${lang}.min`, `./src/lang/${lang}.js`] ), ]), output: { publicPath: '/', path: path.join(__dirname, '../dist'), libraryTarget: 'umd', }, externals: { jquery: 'jQuery', }, module: { rules: [ { test: /\.js$/i, exclude: /node_modules/, use: [ { loader: 'string-replace-loader', options: { search: '@@VERSION@@', replace: pkg.version, }, }, { loader: 'babel-loader', }, ], }, { test: /\.(sa|sc|c)ss$/i, exclude: /node_modules/, use: [ MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { url: false, // do not handle any url in scss/css }, }, { loader: 'postcss-loader', options: { postcssOptions: { plugins: [ require('autoprefixer'), require('postcss-escape-generated-content-string'), ], }, }, }, { loader: 'sass-loader', options: { sassOptions: { indentWidth: 4, outputStyle: 'expanded', }, }, }, ], }, { test: /\.(woff|woff2|ttf|otf|eot)$/i, type: 'asset/resource', generator: { filename: './font/[name][ext]', }, }, ], }, optimization: { minimizer: [ new TerserPlugin({ test: /\.min\.js$/i, extractComments: false, terserOptions: { ecma: 8, compress: { warnings: false, }, }, }), new CssMinimizerPlugin({ test: /\.min\.css$/i, minimizerOptions: { preset: [ 'default', { discardComments: { removeAll: true }, }, ], }, }), ], }, plugins: [ new CleanWebpackPlugin(), new webpack.BannerPlugin({ banner: ({filename}) => { return filename.includes('.min.') ? minBanner : banner; }, }), new MiniCssExtractPlugin({ filename: '[name].css', }), new CopyPlugin({ patterns: [ { from: 'plugin', to: 'plugin', }, { from: 'src/font/summernote.*', to: 'font/[base]', }, ], }), new webpack.SourceMapDevToolPlugin({ filename: '[file].map', exclude: /\.min\./, }), new ZipPlugin({ filename: `summernote-${pkg.version}-dist.zip`, }), ], devtool: false, };