webpack-hhvm-php-loader

1.0.4 • Public • Published

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($userJSON_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

Name Type Default Description
esModule {Boolean} true Uses ES modules syntax
timeout {Number} 5000 Number of milliseconds to wait before timing out
parser {String} json Either json or string mode
engine {String} hhvm The 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

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.4
    4
    • latest

Version History

Package Sidebar

Install

npm i webpack-hhvm-php-loader

Weekly Downloads

4

Version

1.0.4

License

MIT

Unpacked Size

13.1 kB

Total Files

7

Last publish

Collaborators

  • justsml