@tarojs/mini-runner
Version:
Mini app runner for taro
83 lines • 3.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPostcssPlugins = void 0;
const helper_1 = require("@tarojs/helper");
const path = require("path");
const resolve_1 = require("resolve");
const defaultAutoprefixerOption = {
enable: true,
config: {
flexbox: 'no-2009'
}
};
const defaultPxtransformOption = {
enable: true,
config: {
platform: process.env.TARO_ENV
}
};
const defaultUrlOption = {
enable: true,
config: {
limit: 1000,
url: 'inline'
}
};
const defaultHtmltransformOption = {
enable: false,
config: {
platform: process.env.TARO_ENV,
removeCursorStyle: true
}
};
const optionsWithDefaults = ['autoprefixer', 'pxtransform', 'cssModules', 'url', 'htmltransform'];
const plugins = [];
const getPostcssPlugins = function (appPath, { isBuildQuickapp = false, designWidth, deviceRatio, postcssOption = {} }) {
if (designWidth) {
defaultPxtransformOption.config.designWidth = designWidth;
}
if (deviceRatio) {
defaultPxtransformOption.config.deviceRatio = deviceRatio;
}
const autoprefixerOption = (0, helper_1.recursiveMerge)({}, defaultAutoprefixerOption, postcssOption.autoprefixer);
const pxtransformOption = (0, helper_1.recursiveMerge)({}, defaultPxtransformOption, postcssOption.pxtransform);
const urlOption = (0, helper_1.recursiveMerge)({}, defaultUrlOption, postcssOption.url);
const htmltransformOption = (0, helper_1.recursiveMerge)({}, defaultHtmltransformOption, postcssOption.htmltransform);
if (autoprefixerOption.enable) {
const autoprefixer = require('autoprefixer');
plugins.push(autoprefixer(autoprefixerOption.config));
}
if (pxtransformOption.enable && !isBuildQuickapp) {
const pxtransform = require('postcss-pxtransform');
plugins.push(pxtransform(pxtransformOption.config));
}
if (urlOption.enable) {
const url = require('postcss-url');
plugins.push(url(urlOption.config));
}
if (htmltransformOption === null || htmltransformOption === void 0 ? void 0 : htmltransformOption.enable) {
const htmlTransform = require('postcss-html-transform');
plugins.push(htmlTransform(htmltransformOption.config));
}
plugins.unshift(require('postcss-import'));
Object.entries(postcssOption).forEach(([pluginName, pluginOption]) => {
if (optionsWithDefaults.indexOf(pluginName) > -1)
return;
if (!pluginOption || !pluginOption.enable)
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
;