UNPKG

@tarojs/webpack-runner

Version:

webpack runner for taro

103 lines 3.8 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPostcssPlugins = exports.getDefaultPostcssConfig = void 0; const helper_1 = require("@tarojs/helper"); const path = require("path"); const resolve_1 = require("resolve"); const platform = 'h5'; const defaultAutoprefixerOption = { enable: true, config: { flexbox: 'no-2009' } }; const defaultPxtransformOption = { enable: true, config: { platform } }; const defaultConstparseOption = { constants: [ { key: 'taro-tabbar-height', val: '50PX' } ], platform }; const defaultHtmltransformOption = { enable: true, config: { platform, removeCursorStyle: false } }; const defaultUrlOption = { enable: false, config: { url: 'inline' } }; const plugins = []; const getDefaultPostcssConfig = function ({ designWidth, deviceRatio, option = {} }) { const { autoprefixer, pxtransform, htmltransform, url } = option, options = __rest(option, ["autoprefixer", "pxtransform", "htmltransform", "url"]); if (designWidth) { defaultPxtransformOption.config.designWidth = designWidth; } if (deviceRatio) { defaultPxtransformOption.config.deviceRatio = deviceRatio; } const autoprefixerOption = (0, helper_1.recursiveMerge)({}, defaultAutoprefixerOption, autoprefixer); const pxtransformOption = (0, helper_1.recursiveMerge)({}, defaultPxtransformOption, pxtransform); const htmltransformOption = (0, helper_1.recursiveMerge)({}, defaultHtmltransformOption, htmltransform); const urlOption = (0, helper_1.recursiveMerge)({}, defaultUrlOption, url); return [ ['postcss-import', {}, require('postcss-import')], ['autoprefixer', autoprefixerOption, require('autoprefixer')], ['postcss-pxtransform', pxtransformOption, require('postcss-pxtransform')], ['postcss-html-transform', htmltransformOption, require('postcss-html-transform')], ['postcss-plugin-constparse', defaultConstparseOption, require('postcss-plugin-constparse')], ['postcss-url', urlOption, require('postcss-url')], ...Object.entries(options) ]; }; exports.getDefaultPostcssConfig = getDefaultPostcssConfig; const getPostcssPlugins = function (appPath, option = {}) { option.forEach(([pluginName, pluginOption, pluginPkg]) => { if (!pluginOption) return; if (Object.hasOwnProperty.call(pluginOption, 'enable') && !pluginOption.enable) return; if (pluginPkg) { plugins.push(pluginPkg(pluginOption.config || {})); return; } if (!(0, helper_1.isNpmPkg)(pluginName)) { // local plugin pluginName = path.join(appPath, pluginName); } try { const pluginPath = (0, resolve_1.sync)(pluginName, { basedir: appPath }); plugins.push(require(pluginPath)(pluginOption.config || {})); } catch (e) { const msg = e.code === 'MODULE_NOT_FOUND' ? `缺少 postcss 插件 "${pluginName}", 已忽略` : e; console.log(msg); } }); return plugins; }; exports.getPostcssPlugins = getPostcssPlugins; //# sourceMappingURL=postcss.conf.js.map