Giter Site home page Giter Site logo

mp-merge-cli's Introduction

小程序分包合并命令行工具

工具主要提供微信小程序独立分包的合包功能,除此之外还提供独立微信开发者工具之外的�代码编译、代码功能。让开发者不需要关心分包合并、代码编译、代码压缩等东西,支持CI流程引入和本地开发引入。

背景

小程序新的特性独立分包,我们可以把两个工程通过本项目命令合并为一个项目。各个项目开发时各自独立,在编译阶段合并在一起,这样各个小程序开发、访问各自独立。且不会有小程序跳转的弹窗,可以适应较大程序的分治管理。

本工具与具体的小程序框架无关,是建立在小程序分包的基础上的。目前支持下面几种开发框架的混合合并

  • 原生小程序
  • wepy1/2
  • kbone

原理

mp-merge-cli原理

安装

sudo npm i -g mp-merge-cli@latest

使用

如A为子项目,B为主项目,A项目build后产物路径相对当前路径为./indepent,B项目build后产物路径相对当前路径为../B/dist,A包的主入口为./pages/main。 则命令执行如下,工具会自动清空目录构建两个项目并注入脚本完成分包合并。

wepy1/2

mm cleanTargetOutput cleanSourceOutput independent -o './indepent' -O '../B/dist' -e './pages/main'

# 上下一样
mp-merge cleanTargetOutput cleanSourceOutput independent -o './indepent' -O '../B/dist' -e './pages/main'

kbone

因kbone依赖开发者工具的ES6转ES5或增强编译,所以本工具对构建产物进行babel转化和代码uglifyjs压缩

mm babelCompile uglifyjsCompress cleanTargetOutput cleanSourceOutput independent -r "kbone" -c "npm run build:mp" -o './dist/mp' -O '../B/dist'

参数说明

参数名 含义 默认值 是否必传
-c或--sourceCmd 源目录编译命令 npm run build
-C或--targetCmd 目标目录编译命令 npm run build
-o或者--sourceOutput 源目录产物目录
-O或者--targetOutput 目标目录产物目录
-e或者--enterPage 分包入口页面相对路径 源目录产物目录app.json里第一个page
cleanTargetOutput 清空目标目录产物目录 false
cleanSourceOutput 清空源目录产物目录 false
independent 是否独立分包 false
preloadSubpackages 是否分包预加载 false
babelCompile 是否对源目录产物进行babel7编译 false
uglifyjsCompress 是否对源目录产物进行uglifyjs代码压缩 false
-g或--glob uglify代码压缩传入的glob匹配压缩文件 './**/*.js'
-i或--globIgnore uglify代码压缩传入的glob忽略文件 '**/node_modules/**'

示例

可以看./example的demo示例,这里

调试

其中DEBUG=mm:*为环境变量,调试用。

DEBUG=mm:* xxx

帮助

安装后可以命令行查看命令

mm --help

特性

  • 2020-06-15 v1.0.1增加分包预加载支持
  • 2020-06-29 v1.1.0增加kbone合包支持,babel代码编译,uglifyjs代码压缩

mp-merge-cli's People

Stargazers

 avatar ManfredHu avatar Van Dwayne avatar Xinyuan Wang avatar PapacyDai avatar  avatar Alfreton avatar Clark avatar

Watchers

James Cloos avatar ManfredHu avatar

Forkers

savioryu zheng786

mp-merge-cli's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.