@investravis.com/hexo-goose-builder
Version:
An exploratory plugin that aims to introduce a theme builder for Hexo, which supports modular development in the theme building process and supports popular ESM scripts and TailwindCSS, etc.
73 lines (69 loc) • 2.03 kB
JavaScript
'use strict';
const postcss = require('rollup-plugin-postcss');
const commonjs = require('@rollup/plugin-commonjs');
const { nodeResolve } = require('@rollup/plugin-node-resolve');
const cssnano = require('cssnano');
const autoprefixer = require('autoprefixer');
const assetCopier = require('./plugins/asset-copier');
function getPlugins(config) {
const cssAssetsPath = config.cssDir ? `${config.cssDir}/assets` : './assets';
return [
postcss({
extract: true,
dir: config.cssDir,
minimize: true,
modules: false,
sourceMap: false,
filter: (id) => {
if (id.includes('/components.') || id.includes('component.bundle.')) {
console.log('跳过处理文件:', id);
return false;
}
console.log('处理文件:', id);
return true;
},
plugins: [
assetCopier({
assetsPath: cssAssetsPath,
publicPath: '/css/assets',
useHash: true,
cleanBeforeBuild: true,
hashOptions: {
append: true,
method: 'sha256'
}
}),
autoprefixer(),
cssnano({
preset: ['default', {
discardComments: {
removeAll: true,
},
normalizeWhitespace: true,
minifySelectors: true,
minifyFontValues: true,
minifyGradients: true,
minifyParams: true,
minifyUrls: true,
reduceInitial: true,
reduceTransforms: true,
svgo: true
}]
})
]
}),
nodeResolve({
browser: true,
preferBuiltins: false,
extensions: ['.js', '.jsx', '.ts', '.tsx', '.mjs', '.css', '.scss', '.sass', '.less']
}),
commonjs({
transformMixedEsModules: true,
exclude: [
'**/node_modules/katex/**',
'**/node_modules/marked/**'
]
})
];
}
module.exports = { getPlugins };