Mojolicious-Plugin-Webpack

 view release on metacpan or  search on metacpan

t/alien-rollup-files.t  view on Meta::CPAN


subtest asset_map => sub {
  my $assets = $rollup->asset_map;

  my %generated = (
    'alien-rollup-files-t.css'   => 0,
    'alien-rollup-files-t.js'    => 0,
    'images/1x1-red.png'         => 0,
    'images/1x1-transparent.png' => 0,
  );

  for my $rel_name (sort keys %$assets) {
    next if $rel_name =~ m!\.map$!;
    my $asset    = $assets->{$rel_name};
    my $exp_mode = $asset->{ext} eq 'png' ? 'production' : 'development';
    $generated{$asset->{name}} = 1;
    ok -e $asset->{path}, "file $rel_name";
    ok $asset->{mtime}, "mtime $rel_name";
    is $asset->{mode},  $exp_mode, "mode $rel_name";
    like $asset->{ext}, qr{^(css|js|png)$}, "ext $rel_name";
  }

  is_deeply [values %generated], [1, 1, 1, 1], 'generated output assets' or diag explain \%generated;
};

done_testing;

sub make_project_files {
  my $data = Mojo::Loader::data_section('main');
  for my $name (keys %$data) {
    my $file = $rollup->assets_dir->child(split '/', $name);
    $file->dirname->make_path;
    $file->spurt($data->{$name});
  }

  return $data;
}

__DATA__
@@ app.js
const app = {
  start: () => console.log('Starting!'),
};

export default app;
@@ css/cool-stuff.css
body {
  background: #fefefe;
}
@@ index.js
import './css/cool-stuff.css';
import './images/1x1-red.png';
import './images/1x1-transparent.png';
import app from './app.js';
app.start();
@@ images/1x1-red.png (base64)
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWP4z8DwHwAFAAH/q842iQAAAABJRU5ErkJggg==
@@ images/1x1-transparent.png (base64)
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg
@@ rollup.config.d/images.js
const image = require('rollup-plugin-img');
module.exports = function(config) {
  config.plugins.push(image({hash: true, limit: 1, output: 'dist/images'}));
};



( run in 0.764 second using v1.01-cache-2.11-cpan-e93a5daba3e )