UNPKG

piral-cli-webpack5

Version:

Provides debug and build capabilities for pilets and Piral instances using Webpack v5.

104 lines 3.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extensions = void 0; exports.getStyleLoaders = getStyleLoaders; exports.getVariables = getVariables; exports.getPlugins = getPlugins; exports.getRules = getRules; const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const utils_1 = require("piral-cli/utils"); const webpack_1 = require("webpack"); const piletCss = 'main.css'; function getStyleLoaders(useExtractLoader) { if (useExtractLoader) { return [MiniCssExtractPlugin.loader]; } else { return [require.resolve('style-loader')]; } } exports.extensions = ['.ts', '.tsx', '.js', '.jsx', '.json']; function getVariables() { return Object.keys(process.env).reduce((prev, curr) => { prev[curr] = process.env[curr]; return prev; }, {}); } function getPlugins(plugins, pilet) { const otherPlugins = [ new MiniCssExtractPlugin({ filename: pilet ? piletCss : '[name].[fullhash:6].css', chunkFilename: '[id].[chunkhash:6].css', }), ]; if (process.env.WEBPACK_PROGRESS) { otherPlugins.push(new webpack_1.ProgressPlugin((percent, msg) => { if (percent !== undefined) { (0, utils_1.progress)(`${~~(percent * 100)}% : ${msg}`); if (percent === 1) { (0, utils_1.logReset)(); (0, utils_1.log)('generalInfo_0000', 'Bundling finished.'); } } })); } return plugins.concat(otherPlugins); } function getRules(styleLoaders) { const nodeModules = /node_modules/; const babelLoader = { loader: require.resolve('babel-loader'), options: { presets: [require.resolve('@babel/preset-env'), require.resolve('@babel/preset-react')], }, }; const tsLoader = { loader: require.resolve('ts-loader'), options: { transpileOnly: true, }, }; return [ { oneOf: [ { test: /\.s[ac]ss$/i, use: [...styleLoaders, require.resolve('css-loader'), require.resolve('sass-loader')], }, { test: /\.css$/i, use: [...styleLoaders, require.resolve('css-loader')], }, { test: /\.m?jsx?$/i, use: [babelLoader], exclude: nodeModules, }, { test: /\.tsx?$/i, use: [babelLoader, tsLoader], }, { test: /\.codegen$/i, use: [require.resolve('parcel-codegen-loader')], }, { test: /\.js$/i, use: [require.resolve('source-map-loader')], exclude: nodeModules, enforce: 'pre', }, { // Exclude `js` files to keep "css" loader working as it injects // its runtime that would otherwise be processed through "file" loader. // Also exclude `html` and `json` extensions so they get processed // by webpacks internal loaders. exclude: [/^$/, /\.(js|mjs|jsx|ts|tsx|vue|svelte|elm)$/i, /\.html$/i, /\.json$/i], type: 'asset/resource', }, // Don't add new loaders here -> should be added before the last (catch-all) handler ], }, ]; } //# sourceMappingURL=common.js.map