%PDF- %PDF-
Direktori : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/ |
Current File : /home/dopla/www/wp-content/plugins/ml-slider/extendify-sdk/webpack.mix.js |
const path = require('path') const camelCaseDash = (string) => string.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase()) const mix = require('laravel-mix') const fs = require('fs') const semver = require('semver') const requiredNodeVersion = require('./package').engines.node if (!semver.satisfies(process.version, requiredNodeVersion)) { console.log( `Please switch to node version ${requiredNodeVersion} to build. You're currently on ${process.version}. Use FNM or NVM to manage node versions and auto switching.`, ) process.exit(1) } mix.options({ manifest: false }) // If you add additional WP imports, include them here (could we generate these?) const externals = [ 'block-editor', 'blocks', 'components', 'compose', 'data', 'date', 'htmlEntities', 'hooks', 'edit-post', 'element', 'editor', 'i18n', 'plugins', 'viewport', 'ajax', 'codeEditor', 'rich-text', ] const globals = externals.reduce( (externals, name) => ({ ...externals, [`@wordpress/${name}`]: `wp.${camelCaseDash(name)}`, }), {}, ) const webpackConfig = (context) => { return { context: context, // Enable this if you need to see webpack warnings // stats: { // children: true, // }, externals: { wp: 'wp', lodash: 'lodash', fetch: 'fetch', react: 'React', 'react-dom': 'ReactDOM', ...globals, }, } } mix.browserSync({ proxy: 'wordpress.test', open: false, files: ['src/**/*', 'utility-framework/**/*'], }) mix.js('src/app.js', 'public/build/extendify-sdk.js') .webpackConfig(webpackConfig(path.resolve(__dirname, 'src'))) .react() .postCss('src/app.css', 'public/build/extendify-sdk.css', [ require('tailwindcss'), (css) => css.walkRules((rule) => { rule.selector.startsWith('*') && rule.remove() }), require('postcss-safe-important'), ]) mix.js('editorplus/editorplus.js', 'public/editorplus/editorplus.min.js') .webpackConfig(webpackConfig(path.resolve(__dirname, 'editorplus'))) .react() // Utility specific processing const blockList = new Set() const buildBlockList = (css) => { css.walkRules((rule) => { // Allows us to ignore some rules from being processed/purged if ( rule?.nodes.find( (n) => n.type === 'comment' && n.text === 'no suggestion', ) ) { blockList.add(rule.selector.replace('.', '').split(' ')[0]) } }) } const extractSuggestions = (css) => { const classesToExclude = [...blockList] const data = { notes: 'This file is generated in webpack.mix.js. Do not edit directly.', suggestions: [], } css.walkRules((rule) => { data.suggestions.push( rule.selector .replace('.', '') .replace(new RegExp(':not\\(([^\\)]*)\\)'), '') .split(/ |.wp-/)[0], ) }) try { data.suggestions = [...new Set(data.suggestions)].filter( (c) => !classesToExclude.includes(c), ) fs.writeFileSync( __dirname + '/utility-framework/suggestions.json', JSON.stringify(data, null, 4), ) } catch (error) { console.error(error) } return css } mix.postCss( 'utility-framework/extendify-utilities.css', 'public/build/extendify-utilities.css', [ require('postcss-import'), buildBlockList, require('tailwindcss')({ config: 'utility-framework/tailwind.config.js', }), (css) => css.walkRules((rule) => { // Removes top level TW styles like *::before {} rule.selector.startsWith('*') && rule.remove() // This appends the :not() exception to padding and margins ;(new RegExp('[:]?[^a-z]-?p[a-z]?-.+').test(rule) && (rule.selector += ':not([style*="padding"])')) || (new RegExp('[:]?[^a-z]-?m[a-z]?-.+').test(rule) && (rule.selector += ':not([style*="margin"])')) }), extractSuggestions, ], )