Структура и файлы создания плагинов Gutenberg - PullRequest
0 голосов
/ 13 декабря 2018

Я недавно ссылался на несколько совместимых с Gutenberg плагинов.Пример: https://github.com/HardeepAsrani/gutenberg-boilerplate. Я не могу узнать, как создается следующий файл

https://github.com/HardeepAsrani/gutenberg-boilerplate/blob/master/dist/block.js

Я установил npm, и он предоставил мне следующие файлы Файлы

Также не понимаю, как работает файл webpack.config.js.

Может кто-нибудь объяснить мне?

1 Ответ

0 голосов
/ 21 декабря 2018

Я недавно использовал тот же самый шаблон, и, к вашему сведению, package.json не очень хорошо структурирован и имеет некоторые старые зависимости.Мне пришлось изменить код в этом файле, чтобы заставить его работать.Вот мой package.json:

{
    "name": "gutenberg-boilerplate",
    "scripts": {
        "dev": "cross-env BABEL_ENV=default webpack --watch"
    },
    "description": "This plugin add meta boxes in gutenberg's sidebar",
    "main": "src/index.js",
    "devDependencies": {
        "@babel/core": "^7.2.2",
        "@babel/preset-env": "^7.2.0",
        "babel-core": "^6.26.3",
        "babel-loader": "^8.0.4",
        "babel-plugin-add-module-exports": "^1.0.0",
        "babel-plugin-transform-react-jsx": "^6.24.1",
        "babel-preset-env": "^1.7.0",
        "browser-sync": "^2.18.13",
        "browser-sync-webpack-plugin": "^1.2.0",
        "classnames": "^2.2.5",
        "cross-env": "^5.1.1",
        "css-loader": "^0.28.7",
        "eslint": "^4.14.0",
        "eslint-config-prettier": "^2.9.0",
        "eslint-config-wordpress": "^2.0.0",
        "eslint-plugin-prettier": "^2.7.0",
        "extract-text-webpack-plugin": "^3.0.2",
        "node-sass": "^4.7.2",
        "postcss-loader": "^2.0.9",
        "prettier": "^1.15.3",
        "raw-loader": "^0.5.1",
        "sass-loader": "^6.0.6",
        "style-loader": "^0.19.1",
        "webpack": "^3.10.0"
    },
    "version": "1.0.0",
    "license": "MIT"
}

Кроме того, вы должны добавить файл .babelrc в корневой каталог со следующим кодом:

{
  "presets": ["@babel/preset-env"],
  "plugins": [
    ["transform-react-jsx", {
      "pragma": "wp.element.createElement"
    }]
  ]
}

Это гарантирует, что веб-пакетКонфиг действительно работает.

И для ответа на ваш первый вопрос.Файл /dist/block.js генерируется в результате вывода webpack.config.js.Это автоматически создается.

Вот мой webpack.config.js файл:

const path = require( 'path' );
const webpack = require( 'webpack' );
const ExtractTextPlugin = require( 'extract-text-webpack-plugin' );
// const BrowserSyncPlugin = require( 'browser-sync-webpack-plugin' );

// Set different CSS extraction for editor only and common block styles
const blockCSSPlugin = new ExtractTextPlugin( {
  filename: './dist/block.css',
} );

// Configuration for the ExtractTextPlugin.
const extractConfig = {
  use: [
    { loader: 'raw-loader' },
    {
      loader: 'postcss-loader',
      options: {
        plugins: [ require( 'autoprefixer' ) ],
      },
    },
    {
      loader: 'sass-loader',
      query: {
        outputStyle:
          'production' === process.env.NODE_ENV ? 'compressed' : 'nested',
      },
    },
  ],
};

module.exports = {
  entry: {
    './dist/block' : './src/index.js',
  },
  output: {
    path: path.resolve( __dirname ),
    filename: '[name].js',
  },
  watch: true,
  devtool: 'cheap-eval-source-map',
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
          loader: 'babel-loader',
        },
      },
      {
        test: /style\.s?css$/,
        use: blockCSSPlugin.extract( extractConfig ),
      },
    ]
  },
  plugins: [
    blockCSSPlugin
  ],
};

Чтобы запустить конфигурацию, вам просто нужно набрать в своем терминале npm run dev, так как это скрипт, определенный в package.json здесь:

"scripts": {
        "dev": "cross-env BABEL_ENV=default webpack --watch"
    },

Я надеюсь, это поможет вам начать;)

...