UNPKG

@srejs/vue-webpack

Version:

srejs vue技术栈webpack配置工具包

165 lines (163 loc) 6.64 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.possLoader = exports.loaderRules = void 0; var MiniCssExtractPlugin = _interopRequireWildcard(require("mini-css-extract-plugin"), true); var _common = require("@srejs/common"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } var possLoader = exports.possLoader = { loader: 'postcss-loader', options: { postcssOptions: { plugins: [require('autoprefixer')({ overrideBrowserslist: ['last 2 versions'] }), !_common.isDev() ? require('cssnano') : null] } } }; var sassLoader = { loader: 'sass-loader', options: { // Prefer `dart-sass` implementation: require('sass') } }; var getCssLoader = function getCssLoader() { return { loader: 'css-loader', options: { url: true, modules: { localIdentName: '[local]_[hash:base64:5]', auto: /\.module\.\w+$/i //https://github.com/webpack-contrib/css-loader#auto 通过文件格式来区分开启cssmodule 默认第三方组件库就不要使用css module } } }; }; var getCssModuleLoader = function getCssModuleLoader() { return { loader: 'css-loader', options: { modules: { localIdentName: '[local]_[hash:base64:5]' } } }; }; /** * 开发模式采用vue-style-loader 以开启css热加载 * 生产模式mini-css-extract-plugin提取css为单独文件 * @returns */ var getCommonLoader = function getCommonLoader() { var commonDevLoader = ['vue-style-loader']; var commonProdLoader = [MiniCssExtractPlugin.loader]; return _common.isDev() ? commonDevLoader : commonProdLoader; }; var loaderRules = exports.loaderRules = function loaderRules() { var isServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var cssLoader = getCssLoader(); var cssModuleLoader = getCssModuleLoader(); var commonLoader = getCommonLoader(); var envOptions = { modules: false }; if (!isServer) { Object.assign(envOptions, { corejs: { version: 3.8, proposals: true }, useBuiltIns: 'usage' }); } return [{ test: /\.vue$/, loader: 'vue-loader', options: { compilerOptions: { preserveWhitespace: false }, extractCSS: true, cssModules: { localIdentName: '[path][name]---[local]---[hash:base64:5]', camelCase: true } } }, { test: /\.(js|jsx|mjs|ts|tsx)$/, use: { loader: 'babel-loader', options: { cacheDirectory: true, cacheCompression: false, presets: [['@babel/preset-env', envOptions], '@babel/preset-typescript'], plugins: [['@babel/plugin-transform-runtime', { helpers: false, regenerator: true }]] } }, exclude: /node_modules/ }, { test: /\.css$/, oneOf: [{ resourceQuery: /module/, use: [].concat(_toConsumableArray(commonLoader), [cssModuleLoader, possLoader]) }, { use: [].concat(_toConsumableArray(commonLoader), [cssLoader, possLoader]) }] }, { test: /\.styl(us)?$/, oneOf: [{ resourceQuery: /module/, use: [].concat(_toConsumableArray(commonLoader), [cssModuleLoader, possLoader, 'stylus-loader']) }, { use: [].concat(_toConsumableArray(commonLoader), [cssLoader, possLoader, 'stylus-loader']) }] }, { test: /\.scss$/, oneOf: [{ resourceQuery: /module/, use: [].concat(_toConsumableArray(commonLoader), [cssModuleLoader, possLoader, sassLoader]) }, { use: [].concat(_toConsumableArray(commonLoader), [cssLoader, possLoader, sassLoader]) }] }, { test: /\.less$/, oneOf: [{ resourceQuery: /module/, use: [].concat(_toConsumableArray(commonLoader), [cssModuleLoader, possLoader, 'less-loader']) }, { use: [].concat(_toConsumableArray(commonLoader), [cssLoader, possLoader, 'less-loader']) }] }, { test: /\.(png|jpg|jpeg|gif|svg)$/, use: [{ loader: 'url-loader', options: { name: '[contenthash:8].[name].[ext]', limit: 8192, outputPath: 'images/' } }] }, { test: /\.(eot|woff|woff2|ttf)(\?.*)?$/, use: [{ loader: 'url-loader', options: { name: '[contenthash:8].[name].[ext]', outputPath: 'fonts/' } }] }]; };