Mojolicious-Plugin-Webpack

 view release on metacpan or  search on metacpan

example/rollup/assets/rollup.config.d/core.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::rollup 1.01
const commonjs = require('@rollup/plugin-commonjs');
const {nodeResolve} = require('@rollup/plugin-node-resolve');

module.exports = function(config) {
  config.plugins.push(nodeResolve());
  config.plugins.push(commonjs());
};

example/rollup/assets/rollup.config.d/css.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::rollup 1.01
const postcss = require('rollup-plugin-postcss');

module.exports = function(config) {
  config.plugins.push(postcss({
    extract: true,
    plugins: [
      require('postcss-preset-env')(),
      require('cssnano')(),
    ],
  }));
};

example/rollup/assets/rollup.config.d/js.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::rollup 1.01
const {babel} = require('@rollup/plugin-babel');
const {terser} = require('rollup-plugin-terser');

module.exports = function(config, {isDev}) {
  config.plugins.push(babel({
    babelHelpers: 'runtime',
    extensions: ['.html', '.js', '.mjs'],
    plugins: ['@babel/plugin-transform-runtime'],
    presets: [['@babel/preset-env', {corejs: 3, debug: false, useBuiltIns: 'entry'}]],
  }));

  if (!isDev) config.plugins.push(terser());

example/rollup/assets/rollup.config.d/svelte.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::rollup 1.01
const svelte = require('rollup-plugin-svelte');

module.exports = function(config) {
  config.plugins.push(svelte({}));
};

example/rollup/rollup.config.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::rollup 1.01
const fs = require('fs');
const pkg = require('./package.json');
const path = require('path');

const assetsDir = process.env.ROLLUP_ASSETS_DIR || path.resolve(__dirname, 'assets');
const isDev = process.env.NODE_ENV !== 'production';
const outDir = process.env.ROLLUP_OUT_DIR || path.resolve(__dirname, 'dist');
const ts = parseInt((new Date().getTime() / 1000), 10).toString(16);

function outPath(name) {
  return path.resolve(outDir, name.replace(/\[hash\]/, isDev ? 'development' : ts));
}

example/webpack/assets/webpack.config.d/css.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 1.01
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('css-minimizer-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}));
  config.plugins.push(new MiniCssExtractPlugin({filename: isDev ? '[name].development.css' : '[name].[contenthash].css'}));
  config.module.rules.push({
    test: /\.css$/,
    use: [MiniCssExtractPlugin.loader, {loader: 'css-loader', options: {sourceMap: true, url: false}}],
  });
};

example/webpack/assets/webpack.config.d/js.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 1.01
const TerserPlugin = require('terser-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new TerserPlugin({parallel: true}));

  config.module.rules.push({
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: {

example/webpack/assets/webpack.config.d/sass.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 1.01
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('css-minimizer-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}));
  config.plugins.push(new MiniCssExtractPlugin({filename: isDev ? '[name].development.css' : '[name].[contenthash].css'}));
  config.module.rules.push({
    test: /\.s(a|c)ss$/,
    use: [
      MiniCssExtractPlugin.loader,
      {loader: 'css-loader', options: {sourceMap: true, url: false}},
      {loader: 'sass-loader', options: {sourceMap: true}},

example/webpack/assets/webpack.config.d/vue.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 1.01
const {VueLoaderPlugin} = require('vue-loader');

module.exports = function(config) {
  config.plugins.push(new VueLoaderPlugin());
  config.module.rules.push({test: /\.vue$/, use: 'vue-loader'});
};

example/webpack/webpack.config.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 1.01
const fs = require('fs');
const pkg = require('./package.json');
const path = require('path');

const assetsDir = process.env.WEBPACK_ASSETS_DIR || path.resolve(__dirname, 'assets');
const isDev = process.env.NODE_ENV !== 'production';

const config = {
  entry: {},
  mode: isDev ? 'development' : 'production',
  module: {rules: []},
  optimization: {minimizer: []},
  output: {},

lib/Mojo/Alien/rollup.pm  view on Meta::CPAN

See L<Mojo::Alien::webpack/watch>.

=head1 SEE ALSO

L<Mojolicious::Plugin::Webpack> and L<Mojo::Alien::webpack>.

=cut

__DATA__
@@ include/core.js
const commonjs = require('@rollup/plugin-commonjs');
const {nodeResolve} = require('@rollup/plugin-node-resolve');

module.exports = function(config) {
  config.plugins.push(nodeResolve());
  config.plugins.push(commonjs());
};
@@ include/css.js
const postcss = require('rollup-plugin-postcss');

module.exports = function(config) {
  config.plugins.push(postcss({
    extract: true,
    plugins: [
      require('postcss-preset-env')(),
      require('cssnano')(),
    ],
  }));
};
@@ include/eslint.js
const eslint = require('@rollup/plugin-eslint');

module.exports = function(config, {isDev}) {
  if (!isDev) return;
  config.plugins.push(eslint({
    exclude: ['node_modules/**', '**/*.css', '**/*.sass'],
    fix: process.env.ESLINT_FIX ? true : false,
  }));
}
@@ include/js.js
const {babel} = require('@rollup/plugin-babel');
const {terser} = require('rollup-plugin-terser');

module.exports = function(config, {isDev}) {
  config.plugins.push(babel({
    babelHelpers: 'runtime',
    extensions: ['.html', '.js', '.mjs'],
    plugins: ['@babel/plugin-transform-runtime'],
    presets: [['@babel/preset-env', {corejs: 3, debug: false, useBuiltIns: 'entry'}]],
  }));

  if (!isDev) config.plugins.push(terser());
}
@@ include/sass.js
const postcss = require('rollup-plugin-postcss');

module.exports = function(config) {
  config.plugins.push(postcss({extract: true, plugins: [
    require('@csstools/postcss-sass')(),
    require('postcss-preset-env')(),
    require('cssnano')(),
  ]}));
};
@@ include/svelte.js
const svelte = require('rollup-plugin-svelte');

module.exports = function(config) {
  config.plugins.push(svelte({}));
};
@@ rollup.config.js
const fs = require('fs');
const pkg = require('./package.json');
const path = require('path');

const assetsDir = process.env.ROLLUP_ASSETS_DIR || path.resolve(__dirname, 'assets');
const isDev = process.env.NODE_ENV !== 'production';
const outDir = process.env.ROLLUP_OUT_DIR || path.resolve(__dirname, 'dist');
const ts = parseInt((new Date().getTime() / 1000), 10).toString(16);

function outPath(name) {
  return path.resolve(outDir, name.replace(/\[hash\]/, isDev ? 'development' : ts));
}

lib/Mojo/Alien/webpack.pm  view on Meta::CPAN

and over again. Automatically calls L</init>.

=head1 SEE ALSO

L<Mojolicious::Plugin::Webpack> and L<Mojo::Alien::rollup>.

=cut

__DATA__
@@ include/css.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('css-minimizer-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}));
  config.plugins.push(new MiniCssExtractPlugin({filename: isDev ? '[name].development.css' : '[name].[contenthash].css'}));
  config.module.rules.push({
    test: /\.css$/,
    use: [MiniCssExtractPlugin.loader, {loader: 'css-loader', options: {sourceMap: true, url: false}}],
  });
};
@@ include/eslint.js
const ESLintPlugin = require('eslint-webpack-plugin');

module.exports = function(config) {
  config.plugins.push(new ESLintPlugin({
    exclude: ['node_modules/**', '**/*.css', '**/*.sass'],
    fix: process.env.ESLINT_FIX ? true : false,
  }));
};
@@ include/js.js
const TerserPlugin = require('terser-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new TerserPlugin({parallel: true}));

  config.module.rules.push({
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: {
        plugins: ['@babel/plugin-transform-runtime'],
        presets: ['@babel/preset-env'],
      },
    },
  });
};
@@ include/sass.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('css-minimizer-webpack-plugin');

module.exports = function(config, {isDev}) {
  if (!isDev) config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}));
  config.plugins.push(new MiniCssExtractPlugin({filename: isDev ? '[name].development.css' : '[name].[contenthash].css'}));
  config.module.rules.push({
    test: /\.s(a|c)ss$/,
    use: [
      MiniCssExtractPlugin.loader,
      {loader: 'css-loader', options: {sourceMap: true, url: false}},
      {loader: 'sass-loader', options: {sourceMap: true}},
    ],
  });
};
@@ include/vue.js
const {VueLoaderPlugin} = require('vue-loader');

module.exports = function(config) {
  config.plugins.push(new VueLoaderPlugin());
  config.module.rules.push({test: /\.vue$/, use: 'vue-loader'});
};
@@ webpack.config.js
const fs = require('fs');
const pkg = require('./package.json');
const path = require('path');

const assetsDir = process.env.WEBPACK_ASSETS_DIR || path.resolve(__dirname, 'assets');
const isDev = process.env.NODE_ENV !== 'production';

const config = {
  entry: {},
  mode: isDev ? 'development' : 'production',
  module: {rules: []},
  optimization: {minimizer: []},
  output: {},

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

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'}));
};

t/assets/webpack.config.d/js.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 0.14
const TerserPlugin = require('terser-webpack-plugin');

module.exports = function(config) {
  config.optimization.minimizer.push(new TerserPlugin({parallel: true}));
  config.module.rules.push({
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: {
        plugins: ['@babel/plugin-transform-runtime'],

t/webpack.config.js  view on Meta::CPAN

// Autogenerated by Mojo::Alien::webpack 0.14
const fs = require('fs');
const pkg = require('./package.json');
const path = require('path');

const assetsDir = process.env.WEBPACK_ASSETS_DIR || path.resolve(__dirname, 'assets');
const isDev = process.env.NODE_ENV !== 'production';

const config = {
  entry: {},
  mode: isDev ? 'development' : 'production',
  module: {rules: []},
  optimization: {minimizer: []},
  output: {},



( run in 0.501 second using v1.01-cache-2.11-cpan-0d8aa00de5b )