1.0.4 • Published 3 years ago

webpack-hhvm-php-loader v1.0.4

Weekly downloads
2
License
MIT
Repository
github
Last release
3 years ago

npm

tests

size

webpack-hhvm-php-loader

A loader for webpack that executes Hacklang/PHP scripts, returning their output as a String.

Getting Started

To begin, you'll need to install webpack-hhvm-php-loader:

npm install webpack-hhvm-php-loader --save-dev
# Or
yarn add -D webpack-hhvm-php-loader

Then add the loader to your webpack config. For example:

webpack.config.js

// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.php.?$/i,
        use: 'webpack-hhvm-php-loader',
      },
    ],
  },
};

Example JS & PHP files

users.php

<?hh
# Example PHP/Hacklang structure to export:
$user = array(
  'username' => 'justsml',
  'first_name' => 'Dan',
  'date_created' => '2020-12-01',
);

# Write JSON (cross-platform native object interface)
echo json_encode($user, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

file.js

import jsonResults from './users.php';

console.log('username:', jsonResults.username);

And run webpack via your preferred method.

Options

NameTypeDefaultDescription
esModule{Boolean}trueUses ES modules syntax
timeout{Number}5000Number of milliseconds to wait before timing out
parser{String}jsonEither json or string mode
engine{String}hhvmThe executable to run your script with. Defaults to hhvm

esModule

Type: Boolean Default: true

By default, webpack-hhvm-php-loader generates JS modules that use the ES modules syntax. There are some cases in which using ES modules is beneficial, like in the case of module concatenation and tree shaking.

You can enable CommonJS module syntax using:

webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.php.?$/i,
        use: [
          {
            loader: 'webpack-hhvm-php-loader',
            options: {
              esModule: false,
            },
          },
        ],
      },
    ],
  },
};

Timeout

Type: Number Default: 5000

The script execution will timeout after timeout milliseconds elapses.

Examples

With Webpack Config

import jsonResults from './users.php';

console.log('username:', jsonResults.username);

Inline

import jsonResults from 'webpack-hhvm-php-loader!./users.php';

Beware, if you already define loader(s) for extension(s) in webpack.config.js you should use:

import jsonResults from '!!webpack-hhvm-php-loader!./users.php'; // Adding `!!` to a request will disable all loaders specified in the configuration

License

MIT

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago