2021年6月20日星期日

基于webpack5封装的cli工具packx

安装

用 npm / yarn 安装:

$ npm install -D packx$ yarn add -D packx

特性

  1. 基于 webpack5
  2. 支持 less,sass
  3. 支持 spa/mpa
  4. 支持 typescript
  5. 支持自定义html模板和自动生成 html入口
  6. 支持 react hmr
  7. 支持扩展 postcss, 比如 px2rem, px2viewport
  8. 支持自定义配置packx.config.js,覆盖默认webpack配置 (基于 webpack merge 算法)
  9. 支持 node api 调用和命令行调用
  10. 支持ssr

用法

  • 开发 packx start [-p port]
  • 构建 packx build [-p publicPath]
  • 自定义 packx run [--build],配置 packx.config.js
  • js api 调用
  • ssr

入口在 ./src 目录下,比如./src/index.jsx

--src - index.jsx;

运行 packx start

入口在 ./src/page/ 目录下,比如./src/page/index.tsx

--src --page  -index.tsx;

运行 packx start page

入口 html, 如果项目不包含 index.html ,默认会生成 index.html,可以自定义 html 结构
<!DOCTYPE html><html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta  name="viewport"  content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,minimal-ui,viewport-fit=cover" /> <meta name="format-detection" content="telephone=no, email=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-touch-fullscreen" content="yes" /> <title></title> </head> <body > <div id="root"></div> </body></html>

扩展 postcss 插件

项目根目录添加 postcss.config.js, 以添加 px2viewport 为例

module.exports = (ctx) => { if (!/node_modules/.test(ctx.file)) { ctx.options.plugins.push([  require('postcss-px-to-viewport'),  {  unitToConvert: 'px',  viewportWidth: 375,  unitPrecision: 5,  propList: ['*'],  viewportUnit: 'vw',  fontViewportUnit: 'vw',  selectorBlackList: ['ignore'],  minPixelValue: 1,  mediaQuery: false,  replace: true,  exclude: [/node_modules/],  include: undefined,  landscape: false,  landscapeUnit: 'vw',  }, ]); }};

packx run 通过 packx.config.js 自定义配置

注意,除了 entry 限制为 object 外, 配置项和 webpack 配置一致
下面通过自定义配置 packx.config.js 实现了 mpa 项目的打包

const path = require('path');module.exports = { entry: { h5: './src/h5/index', pc: './src/pc/index', }, output: { path: path.resolve(__dirname, './dist/packx-demo'), publicPath: '', },};
  • 开发 packx run
  • 构建 packx run --build

node 命令行用法

packx 默认导出了一个 nodeApi, 函数签名如下, Configuration 为 webpack 配置对象

export default function nodeApi(isDev: boolean, config: Configuration, callback?: () => void): void;
const { default: pack } = require('packx');...pack(isDev, { entry: { index: `./src/index`, }, devServer: { port: 3000 }, output: { path: getDist('dist'), publicPath, },}, () => { // 构建结束处理 });

项目结构和打包输出如下图

structure.png

ssr

ssr和上述使用参考packx-demo库

项目代码参考 https://github.com/leonwgc/packx-demo









原文转载:http://www.shaoqun.com/a/815667.html

跨境电商:https://www.ikjzd.com/

七十女人喜欢被㖭 进去后女人就不反抗了:http://lady.shaoqun.com/m/a/248366.html

几位领导在办公室玩我 把她压在办公桌上进进出出:http://www.30bags.com/m/a/249746.html

一个㖭下面两个吃奶 美女把腿张开让男人使劲桶:http://lady.shaoqun.com/m/a/247532.html

口述实录:少妇实录:邻居用销魂的床技将我征服:http://www.30bags.com/m/a/249951.html


安装用npm/yarn安装:$npminstall-Dpackx$yarnadd-Dpackx特性基于webpack5支持less,sass支持spa/mpa支持typescript支持自定义html模板和自动生成html入口支持reacthmr支持扩展postcss,比如px2rem,px2viewport支持自定义配置packx.config.js,覆盖默认webpack配置(基于webpac
感觉年味越来越淡?一组照片带你感受火红的牛年:http://www.30bags.com/a/241698.html
感慨龙宫——瑶池琼玉现人间(组图) - :http://www.30bags.com/a/406163.html
感冒用这些食物来治疗 - :http://www.30bags.com/a/410041.html
口述实录:不正经的小姨变小三 竟然跟我抢男人:http://lady.shaoqun.com/m/a/251444.html
口述实录:女友嫌贫爱富,失去她后我拥有了全世界!:http://lady.shaoqun.com/m/a/255504.html
男人撕开奶罩揉吮奶头 我都说疼了他还在继续:http://www.30bags.com/m/a/249804.html
如果你此刻正在经历婚外情,这三个女人的故事希望能激励你:http://www.30bags.com/a/443911.html
长期住在不同房间的情侣,对健康有什么影响?:http://www.30bags.com/a/443912.html
男人为何对老婆提不起性趣,原因在这……:http://lady.shaoqun.com/a/117264.html
撞击旗袍丝袜老师 小坏蛋你太厉害了我受不了了:http://lady.shaoqun.com/a/247953.html
男朋友把我抱到镜子前做 对着镜子从后面挺进她:http://www.30bags.com/m/a/249754.html
浅谈野史中的同治皇帝卖淫(下):http://www.30bags.com/a/443910.html

没有评论:

发表评论

跨境电商资讯:外贸宣传平台有哪些(出口的

现在很多做外贸的人都非常关注 外贸企业怎么推广 ,而现在推广的途径和平台有很多,企业如果都做,成本和时间精力是一个问题,而且并不是所有的推广渠道都是有用的。今天云程网络就来为大家盘点几个有效的外贸推广渠道。 一、海外社交媒体营销 Facebook,领英等海外社交媒体营销在近几年得...