UNPKG

@blueking/lesscode-cli

Version:

Command Tools for Lesscode

144 lines (136 loc) 4.71 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.plugins = exports.rules = exports.optimization = void 0; var _path = require("path"); var _webpack = _interopRequireDefault(require("webpack")); var _vueLoader = require("vue-loader"); var _terserWebpackPlugin = _interopRequireDefault(require("terser-webpack-plugin")); var _optimizeCssAssetsWebpackPlugin = _interopRequireDefault(require("optimize-css-assets-webpack-plugin")); const pathToNodeModules = '../../../node_modules'; const optimization = { minimizer: [new _terserWebpackPlugin.default({ terserOptions: { compress: false, mangle: true, output: { comments: false } }, extractComments: false, cache: true, parallel: true, sourceMap: true }), new _optimizeCssAssetsWebpackPlugin.default({ cssProcessorOptions: { safe: true } })], splitChunks: { chunks: 'all', minSize: 30000, maxSize: 0, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: '~', name: true, cacheGroups: { bkMagicVue: { chunks: 'all', name: 'chunk-bk-magic-vue', priority: 5, reuseExistingChunk: true, test: module => /bk-magic-vue/.test(module.context) }, twice: { chunks: 'all', name: 'twice', priority: 6, minChunks: 2 }, default: { minChunks: 2, priority: -20, reuseExistingChunk: true }, vendors: { test: /[\\/]node_modules[\\/]/, priority: -10 } } } }; exports.optimization = optimization; const rules = [{ test: /\.vue$/, use: [{ loader: (0, _path.resolve)(__dirname, pathToNodeModules, 'vue-loader'), options: { transformAssetUrls: { video: 'src', source: 'src', img: 'src', image: 'xlink:href' } } }] }, { test: /\.js$/, use: { loader: (0, _path.resolve)(__dirname, pathToNodeModules, 'babel-loader'), options: { include: [(0, _path.resolve)(__dirname, '..', 'src')], cacheDirectory: (0, _path.resolve)(__dirname, '..', '.webpack_cache'), exclude: file => /node_modules/.test(file) && !/\.vue\.js/.test(file), presets: [[(0, _path.resolve)(__dirname, pathToNodeModules, '@babel/preset-env'), { modules: 'commonjs', targets: { browsers: ['> 1%', 'last 2 versions', 'not ie <= 8'], node: 'current' }, debug: false }], ['@vue/babel-preset-jsx']], plugins: [(0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-transform-async-to-generator'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-transform-object-assign'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-syntax-dynamic-import'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-transform-runtime'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-transform-modules-commonjs'), [(0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-proposal-decorators'), { legacy: true }], (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-proposal-function-sent'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-proposal-export-namespace-from'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-proposal-numeric-separator'), (0, _path.resolve)(__dirname, pathToNodeModules, '@babel/plugin-proposal-throw-expressions'), (0, _path.resolve)(__dirname, pathToNodeModules, 'babel-plugin-add-module-exports'), [(0, _path.resolve)(__dirname, pathToNodeModules, 'component'), { libraryName: 'element-ui', styleLibraryName: 'theme-chalk' }]] } } }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: (0, _path.resolve)(__dirname, pathToNodeModules, 'url-loader'), options: { esModule: false, limit: true } }, { test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, use: { loader: (0, _path.resolve)(__dirname, pathToNodeModules, 'url-loader'), options: { esModule: false, limit: true } } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, use: { loader: (0, _path.resolve)(__dirname, pathToNodeModules, 'url-loader'), options: { esModule: false, limit: true } } }]; exports.rules = rules; const plugins = [new _vueLoader.VueLoaderPlugin(), new _webpack.default.LoaderOptionsPlugin({ minimize: true }), new _webpack.default.optimize.LimitChunkCountPlugin({ maxChunks: 1 })]; exports.plugins = plugins;