針對項目、組件、路由等的特定配置,以滿足各種方式的需求。
組件基礎(chǔ)配置及各端差異配置,包括組件引入等。
組件的配置以 json 對象的格式配置在.cml 文件中,結(jié)構(gòu)如下:
<script cml-type="json">
{
"base":{
"usingComponents": {
"navi": "/components/navi/navi",
"c-cell": "/components/c-cell/c-cell",
"c-list": "/components/c-list/c-list",
"navi-npm": "cml-test-ui/navi/navi"
}
},
"wx": {
},
"alipay": {
},
"baidu": {
},
"web": {
},
"weex": {
}
}
</script>
項目統(tǒng)一路由配置,CML 項目內(nèi)置了一套各端統(tǒng)一的路由配置方式。
src/router.config.json是路由的配置文件,內(nèi)容如下:
{
"mode": "history",
"domain": "https://www.chameleon.com",
"routes":[
{
"url": "/cml/h5/index",
"path": "/pages/index/index",
"mock": "index.php"
}
]
}
注:apiPrefix、publicPath、router.config.json、cmlUrl 的關(guān)系
chameleon-tool@1.0.6-alpha.1版本支持了路由按需配置,即開發(fā)者可以根據(jù)平臺自定義配置某個路由在哪個端顯示
默認情況下路由會在所有端顯示,當配置了該字段的時候,僅在配置端生效 比如下面的配置
{
"mode": "history",
"domain": "https://www.chameleon.com",
"routes":[
{
"url": "/cml/h5/index",
"path": "/pages/index/index",
"name": "首頁",
"mock": "index.php",
"usedPlatforms":["web","wx"]
},
{
"url": "/cml/h5/index1",
"path": "/pages/index/index1",
"name": "首頁",
"mock": "index.php",
"usedPlatforms":["web"]
},
{
"url": "/cml/h5/index2",
"path": "/pages/index/index2",
"name": "首頁",
"mock": "index.php",
"usedPlatforms":["wx"]
},
{
"url": "/cml/h5/index3",
"path": "/pages/index/index3",
"name": "首頁",
"mock": "index.php",
"usedPlatforms":["weex"]
}
]
}
不同端、不同模式的差異化構(gòu)建配置。
本文檔描述了項目配置的全部參數(shù)及使用方法。
字段名 | 類型 | 可選值 | 說明 | 備注 |
---|---|---|---|---|
templateType | String | html[默認]、smarty | web端構(gòu)建出的頁面文件類型 | |
projectName | String | - | web端構(gòu)建出的頁面文件名稱 | |
templateLang | String | cml[默認]、vue | 視圖層模版語法 | 兩種語法不可混用 |
platforms | Array[String] | ['web','weex','wx','alipay','baidu'] | 當前項目支持端配置 | |
devOffPlatform | Array[String] | ['web','weex','wx','alipay','baidu'] | dev模式下關(guān)閉部分端構(gòu)建 | |
buildOffPlatform | Array[String] | ['web','weex','wx','alipay','baidu'] | build模式下關(guān)閉部分端構(gòu)建 | |
enableLinter | Boolean | true[默認]、false | 是否開啟chameleon的語法檢查 | |
check | Object | - | 多態(tài)校驗控制 | |
check.enable | Boolean | true[默認]、false | 是否開啟多態(tài)語法校驗 | |
check.enableTypes | Array[String] | ['Object','Array','Nullable'] | Object表示多態(tài)協(xié)議中傳遞數(shù)據(jù)為對象時不校驗內(nèi)部具體數(shù)據(jù),Array表示多態(tài)協(xié)議中傳遞數(shù)據(jù)為數(shù)組時不校驗內(nèi)部具體數(shù)據(jù),Nullable表示某些參數(shù)不是必傳 | 謹慎使用,確定的輸入數(shù)據(jù)結(jié)構(gòu)會提高代碼維護性! |
enableGlobalCheck | Boolean | true、false | 是否開啟全局變量校驗 | |
globalCheckWhiteList | Array[String|RegExp] | - | 文件校驗白名單,配置后可不校驗改文件 | |
devPort | Number | 8000[默認] | dev模式啟動的web服務(wù)端口,默認從8000開始查找空閑端口 | |
excludeBablePath | Array[String|RegExp] | - | 配置babel-loader不處理文件 | |
babelPath | Array[String|RegExp] | - | 配置babel-loader處理文件 | |
cmss | Object | - | cml相關(guān)配置,僅web端有效 | |
cmss.rem | Boolean | true[默認]、false | 樣式單位是否編譯為rem | |
cmss.scale | Number | 0.5[默認] | cmss.rem為false時有效,尺寸換算規(guī)則 cpx * cmss.scale = px | |
baseStyle | Object | - | 禁用基礎(chǔ)樣式 | |
baseStyle[platform] | Boolean | true、false | 禁用該端基礎(chǔ)樣式,platfrom為:web|weex|wx|alipay|baidu | baseStyle.web為false時不插入web端基礎(chǔ)樣式,其他端同理 |
cmlComponents | Array[String] | ['cml-ui'] | 全局自動引入組件庫 | 當設(shè)置該項之后可以直接使用改庫下所有組件,無需手動引入 |
subProject | Array[String|Object] | - | 配置項目中引入的子項目 | 子項目的可以通過對象或者字符串的方式配置 |
optimize | Object | - | 優(yōu)化項目構(gòu)建 | chameleon-tool@1.0.5-alpha.1開始支持 |
globalStyleConfig | Object | - | 支持全局樣式,便于修改內(nèi)置組件樣式 | chameleon-tool@1.0.5-alpha.1開始支持 |
平臺內(nèi)構(gòu)建配置是針對某一端執(zhí)行命令構(gòu)建時的特殊配置。
字段名 | 類型 | 可選值 | 說明 | 備注 |
---|---|---|---|---|
publicPath | String | - | 靜態(tài)資源發(fā)布路徑 | 設(shè)置該字段執(zhí)行構(gòu)建時靜態(tài)資源地址將改為該地址 |
apiPrefix | String | - | 接口請求地址地址 | 設(shè)置該字段調(diào)用請求時如果請求路徑不是全路徑則拼接該地址 |
hash | Boolean | true[build默認]、false[dev默認] | 構(gòu)建出的文件名是否帶hash | 用于更新瀏覽器緩存 |
minimize | Boolean | true[build默認]、false[dev默認] | 構(gòu)建出的文件是否進行代碼壓縮 | |
hot | Boolean | true[默認]、false | 控制是否開啟熱更新 | web端有效 |
analysis | Boolean | true[默認]、false | 是否打開webpack打包分析工具 | |
console | Boolean | false[默認]、true | 控制是否打開頁面上的調(diào)試窗口 | web端有效 |
definePlugin | Object | - | 定義運行時內(nèi)部變量 | |
moduleIdType | String | number、hash、name | 設(shè)置webpack打包模塊的id類型 | |
babelPolyfill | Boolean | 默認 false | 是否添加polyfill | web端@babel/polyfill 小程序端miniappPolyfill weex端 weexPolyfill |
domain | Object | 默認 {} | 多域名請求前綴 |
CML 的構(gòu)建過程是配置化的,項目的根目錄下提供一個 chameleon.config.js 文件,在該文件中可以使用全局對象 CML 的 api 去操作配置對象。例如:
// 設(shè)置靜態(tài)資源的線上路徑
const publicPath = '//www.static.chameleon.com/static';
// 設(shè)置 API 請求前綴
const apiPrefix = 'https://api.chameleon.com';
// 合并配置
cml.config.merge({
templateType: 'html',
projectName: 'Chameleon',
base: {
dev: {
domain1: 'localhost',
domain2: 'localhost',
},
build: {
domain1: 'http://www.cml1.com',
domain1: 'http://www.cml2.com',
},
},
web: {
dev: {
hot: true,
console: true,
},
build: {
publicPath: `${publicPath}/web`,
apiPrefix,
},
},
});
配置對象的第一級為全局配置,例如projectName,全局配置中有各平臺內(nèi)的配置對象,例如web、wx、weex等。其中base對象用于配置各個平臺對象的公共部分。
平臺對象內(nèi)部分為各 media 的配置對象,例如dev、build。
下面就詳細介紹配置中的功能。
templateType, String 類型。該字段控制 Web 端構(gòu)建 出的頁面文件類型。
例如:
cml.config.merge({
templateType: 'html',
});
projectName, String 類型。
該字段控制 Web 端構(gòu)建 出的模板文件名稱,默認是當前項目的根目錄文件夾名稱。
例如:
cml.config.merge({
projectName: 'test_cml',
templateType: 'html',
});
Web 端構(gòu)建出 test_cml.html文件
templateLang, String 類型。CML 的視圖層支持兩種模板語法,通過在 template 上的lang屬性做區(qū)分,如果不寫默認是 CML 語法。該字段控制init page 和init component 時生成的 cml 文件的 template 模板上的lang屬性。例如:
cml.config.merge({
templateLang: 'cml',
});
platforms, Array[String]類型。 配置當前項目支持的 端,該配置決定cml dev和cml build命令啟動構(gòu)建的端,決定cml init命令初始化多態(tài)接口和多態(tài)組件時只生成相應端代碼。 例如:
cml.config.merge({
platforms: ['web', 'wx'],
});
cml dev和cml build只啟動 web 和 wx 端的構(gòu)建。
devOffPlatform和buildOffPlatform, Array[String] 類型。 當我們執(zhí)行cml dev 和 cml build 時會自動構(gòu)建輸出 所有平臺的代碼,可以通過這兩個字段控制不需要構(gòu)建的平臺,目前支持取值["web","wx","weex"]。 例如:
cml.config.merge({
devOffPlatform: ['wx'],
buildOffPlatform: ['wx'],
});
enableLinter, Boolean 類型。
默認為 true,是否開啟 CML 的語法檢查,會在命令行提示語法錯誤。 例如:
cml.config.merge({
enableLinter: false,
});
check, Object 類型。 CML 提供了多態(tài)接口與多態(tài)組件的寫法,同時為了保證代碼的質(zhì)量提供了多態(tài)校驗的方法,可以通過check字段進行校驗的控制。
check.enable, Boolean 類型。 控制是否開啟多態(tài)校驗,默認true。
check.enableTypes, Array[String] 類型。 可取值["Object","Array","Nullable"],控制校驗中是否可以定義直接定義 Object 和 Array 類型,和 是否可以定義可為空類型,默認值為[]。 例如:
cml.config.merge({
check: {
enable: true,
enableTypes: ['Object', 'Array', 'Nullable'],
},
});
enableGlobalCheck, Boolean 類型。默認是 false,(chameleon-tool 0.2.0 版本及之后默認為 true),控制是否進行全局變量的檢驗。
例如:
cml.config.merge({
enableGlobalCheck: true,
});
globalCheckWhiteList, Array[String|RegExp] 類型。
chameleon 內(nèi)置了全局變量校驗的功能 可以設(shè)置白名單不校驗某些文件。以文件絕對路徑進行匹配,可以是正則表達式徑,也可以是字符串的 endWiths。
例如:
cml.config.merge({
globalCheckWhiteList: ['jquery.js', /node_modules/],
});
則所有以 jquery.js 結(jié)尾的文件以及 正則匹配 /node_modules/ 的不做校驗;
devPort, Number 類型。 dev 模式啟動的 web 服務(wù)端口,默認是從 8000 開始尋找空閑端口,避免了啟動多個項目時的端口沖突問題。如果想指定端口可以使用該參數(shù)進行配置。 例如:
cml.config.merge({
devPort: 8080,
});
excludeBablePath, Array[String|RegExp] 類型。
const path = require('path');
cml.config.merge({
excludeBablePath: [/test-exclude/, path.resolve(__dirname, './src/excludes')],
});
這個配置的結(jié)果會作為 webpack 模塊配置中 Rule.exclude 的值;
babelPath, Array[String|RegExp] 類型。 默認開發(fā)者引入的 node_modules 中的文件不經(jīng)過 babel,如有文件需要 babel,設(shè)置該參數(shù)。
const path = require('path');
cml.config.merge({
babelPath: [path.resolve(__dirname, 'node_modules/test/')],
});
這個配置的結(jié)果會作為 webpack 模塊配置中 Rule.include 的值;
cmss,Object 類型。 僅用于 Web 端。其中包含 rem 及 scale 屬性,Web 端構(gòu)建時默認將 cpx 轉(zhuǎn)為 rem,當不需要時轉(zhuǎn)為 rem 時,將 rem 置為 false,則 scale 參數(shù)生效,scale 為像素縮放倍數(shù),默認為 1,會將 cpx 按照 scale 的設(shè)置進行縮放為 px。例如:
cml.config.merge({
cmss: {
rem: false,
scale: 0.5,
},
});
該設(shè)置 Web 端 cpx 不轉(zhuǎn)為 rem,而縮小 1 倍轉(zhuǎn)為 px,例如 10cpx 轉(zhuǎn)為 5px。
baseStyle, Object 類型。 chameleon 為了讓各端樣式統(tǒng)一,默認會在全局插入一些基礎(chǔ)樣式,如果開發(fā)者的跨端不需要這些基礎(chǔ)樣式,可以通過該參數(shù)進行設(shè)置。key 值為端名稱,value 為 Boolean 值,是否插入 基礎(chǔ)樣式。例如:
cml.config.merge({
baseStyle: {
web: false,
wx: false,
weex: false,
},
});
該設(shè)置 web、wx、Weex 端均不插入基礎(chǔ)樣式。
cmlComponents, Array[String] 類型。 當我們想把 npm 組件庫中的組件全部自動引入,而不需要單獨引入時,可以通過該字段配置 npm 包名稱。例如 cml-ui是我們提供的一個 npm 組件庫,可以進行如下配置:
cml.config.merge({
cmlComponents: ['cml-ui'],
});
npm 組件庫的package.json中的main字段可以指定路徑,否則就會查找 npm 包中的所有 cml 文件自動引入,自動引入的組件名稱為 cml 文件名稱。
subProject, Array[String|Object]類型。 當配置項為 Object 時, npmName 表示該子項目的地址(從 node_modules 層級開始配置), isInjectBaseStyle 表示該子項目是否注入基礎(chǔ)樣式; 當配置項為 String 時,該值直接表示該子項目的地址(從 node_modules 層級開始配置),此時不支持配置是否注入基礎(chǔ)樣式,子項目默認注入基礎(chǔ)樣式。例如:
cml.config.merge({
subProject: [
{
npmName: '@didi/cml-login',
isInjectBaseStyle: false,
},
'@didi/base-style-test',
],
});
chameleon-tool@1.0.5-alpha.1 開始支持
cml.config.merge({
optimize: {
watchNodeModules: false // 默認不對 node_modules中的文件進行 watch,提升編譯性能
});
chameleon-tool@1.0.5-alpha.1 開始支持
cml.config.merge({
globalStyleConfig: {
//globalCssPath 該路徑下的樣式對非 Weex 端生效;
globalCssPath: path.join(__dirname, 'src/assets/global.config.less'),
weexCssConfig: {
//該文件內(nèi)的樣式會作為全局樣式導入
weexCssPath: path.join(__dirname, 'src/assets/global.weex.less'),
//由于weex端本身的限制,假如某些情況下,要覆蓋內(nèi)置組件的某個樣式,我們提供了對于該組件注入樣式的方式,注入的樣式只會對該組件生效
injectCss: [
{
componentPath: path.join(
__dirname,
'node_modules/cml-ui/components/c-dialog/c-dialog.cml',
),
cssPath: path.join(__dirname, 'src/assets/c-dialog.less'),
},
],
},
},
});
buildInfo, Object 類型。 buildInfo.wxAppId,String 類型。微信的 appId。
當執(zhí)行完 cml build 后會生成一個config.json文件,該文件存儲構(gòu)建后各平臺的頁面信息??梢酝ㄟ^這個 json 文件做頁面的動態(tài)下發(fā),頁面降級等等。
例如:
cml.config.merge({
buildInfo: {
wxAppId: '123456',
},
});
cml build 后生成 在dist/config.json
{
"wx": {
"appId": "123456",
"path": "/pages/index/index"
},
"web": {
"url": "https://api.chameleon.com/cml/h5/index"
},
"weex": {
"url": "https://static.chameleon.com/pinche/hkcml/weex/hybridkits_pageone_e86b77ae05a015a3a546.js",
"query": {
"path": "/pages/index/index"
}
}
}
config.json 中微信小程序的 appId 是 通過buildInfo配置生成,其他的頁面信息是根據(jù)router.config.json中的配置生成。
例如:
cml.config.merge({
enableLinter: false,
});
默認的入口與頁面集成在命令行中,對于有特殊 需求的開發(fā)者,CML 提供了可以自定義 Web 端構(gòu)建入口與頁面,Weex 端構(gòu)建入口的功能。 entry, Object 類型。 entry.template, String 類型。 頁面文件的絕對路徑。 entry.web, String 類型。 Web 端入口文件的 絕對路徑。 entry.weex, String 類型。 wewx 端入口文件的 絕對路徑。 例如:
var path = require('path');
cml.config.merge({
entry: {
template: path.resolve('./src/index.html')
web: path.resolve('./src/mian.web.js')
weex: path.resolve('./src/main.weex.js')
}
})
每一個平臺的構(gòu)建會需要不同的配置,所以針對每一個平臺會有一個平臺配置對象,平臺配置對象中又有多個 media 配置對象,例如 dev 或者 build 的配置。 下面講述的配置項都是放在 media 對象中。例如: wx web weex是平臺對象,里面的dev和build是 media 對象。
cml.config.merge({
wx: {
dev: {},
build: {},
},
web: {
dev: {},
build: {},
},
weex: {
dev: {},
build: {},
},
});
以下介紹平臺內(nèi)配置支持的配置項
文件指紋是文件的唯一標識,以文件的內(nèi)容生成 hash 值作為文件名稱的一部分。在開啟強緩存的情況下,如果文件的 URL 不發(fā)生變化,無法刷新瀏覽器緩存。文件指紋 用于更新瀏覽器的緩存。小程序端不需要文件指紋。 默認圖片資源 開啟 hash,build 模式開啟 hash。 通過hash字段配置。
hash, Boolean 類型。 控制打包出的 js 和 css 文件是否帶 hash 后綴,圖片字體等靜態(tài)資源自動帶 hash,其小程序端不支持 hash 參數(shù)。
例如:
cml.config.merge({
web: {
dev: {
hash: true,
},
},
});
下圖為 Web 端開啟文件指紋的打包結(jié)果。
為了減少資源網(wǎng)絡(luò)傳輸?shù)拇笮?,通過壓縮器對 js、css、圖片進行壓縮是一直以來前端工程優(yōu)化的選擇。在 CML 中只需要 配置minimize參數(shù)。
minimize, Boolean 類型。
控制打包出的文件是否進行壓縮。
例如:
cml.config.merge({
web: {
dev: {
minimize: true,
},
},
});
publicPath, String 類型。 控制代碼中靜態(tài)資源的引用路徑, 線上發(fā)布需要用到,media 為 dev 時默認 小程序端是本地路徑,web 和 Weex 端是當前 dev 服務(wù)的 路徑。 例如:
cml.config.merge({
web: {
build: {
publicPath: 'http://www.chameleon.com/static',
},
},
});
熱更新與自動刷新都是提高本地開發(fā)效率的手段,當項目中的源代碼發(fā)生改變時, 能夠自動的在頁面看到改變,其中熱更新不需要重新刷新預覽的頁面。目前只有 Web 端的開發(fā)支持熱更新,通過hot 參數(shù)配置。 dev模式默認自動刷新,Web 端可以選擇開啟熱更新。
hot, Boolean 類型。
控制是否開啟熱更新,只在 Web 端生效,開啟熱更新時,css 代碼不會單獨分離出來,如果進行線上 js 代理本地 js 調(diào)試問題時,請關(guān)閉熱更新。
例如:
cml.config.merge({
web: {
dev: {
hot: true,
},
},
});
analysis, Boolean 類型。
控制是否 打開 webpack 打包分析工具, 內(nèi)部使用的webpack-bundle-analyzer插件。
例如:
cml.config.merge({
web: {
dev: {
analysis: true,
},
},
});
console, Boolean 類型。
控制是否打開頁面上的調(diào)試窗口,只在 Web 端有效,方便在真機上進行調(diào)試。
例如:
cml.config.merge({
web: {
dev: {
console: true
}
}
})
definePlugin, Object 類型,內(nèi)部使用webpack.DefinePlugin實現(xiàn),定義運行時的內(nèi)置變量。 例如:
cml.config.merge({
web: {
dev: {
definePlugin: {
'process.env.TEST': JSON.stringify('CML_TEST')
}
}
}
})
apiPrefix, String 類型。 這個配置與網(wǎng)絡(luò)請求相關(guān),在 wx 和 Weex 項目中,ajax 的請求不能像 Web 端一樣只寫相對路徑,而是要寫帶有域名的絕對路徑,chameleon-api 這個基礎(chǔ)庫,提供了網(wǎng)絡(luò)請求的 api,get、post、request方法,該方法會在運行時將請求的相對路徑上添加配置的apiPrefix。media 是 dev 時 默認為當前 dev 服務(wù)的地址,不需要配置。 例如: chameleon.config.js
// 設(shè)置 API 請求前綴
const apiPrefix = 'http://api.chameleon.com';
cml.config.merge({
wx: {
dev: {
},
build: {
apiPrefix
}
}
})
<script>
import cml from 'chameleon-api';
class Index {
methods = {
sendGet() {
cml
.get({
url: '/api/driver/getList',
data: {
name: 'cml',
age: 18,
},
})
.then((res) => {
console.log(res);
})
.catch((e) => {
console.log(e);
});
},
};
}
export default new Index();
</script>
在執(zhí)行 cml wx dev 命令構(gòu)建的結(jié)果中,cml.get() 方法發(fā)送的請求是 http://172.22.137.29:8000/api/driver/getList
在執(zhí)行 cml wx build 命令構(gòu)建的結(jié)果中,cml.get() 方法發(fā)送的請求是 http://api.chameleon.com/api/driver/getList
moduleIdType,String 類型。 設(shè)置 webpack 打包模塊的 id 類型。
例如:
cml.config.merge({
web: {
dev: {
moduleIdType: "number"
}
}
})
chameleon-tool@0.0.15 開始支持 Web 端 chameleon-tool@0.3.0 開始支持 小程序端 chameleon-tool@0.3.3 開始支持 Weex 端
babelPolyfill, Boolean 類型, 默認 false。 一些 es6+的語法,babel 不會轉(zhuǎn)義,例如 Object.sssign、Object.entries 等方法, 如果客戶端運行環(huán)境不支持這些語法就會出錯。其中 Web 使用的是 @babel/polyfill, 小程序端使用的是自寫的一些方法的 polyfill,參見 miniappPolyfill,Weex 端使用的是自寫的一些方法的 polyfill,參見 weexPolyfill。注意添加 polyfill 后會增加一些文件體積。
例如:
cml.config.merge({
base: {
dev: {
babelPolyfill: true
},
build: {
babelPolyfill: true
}
}
})
chameleon-tool@0.2.1 chameleon-api@0.3.1 開始支持
domain, Object 類型。 一般配置在 base 對象中,作為所有平臺的公共配置,dev 模式中配置的localhost會替換成當前 dev 模式啟動的 web 服務(wù) ip+端口。 具體使用文檔參見 API 多域名 Mock。
例如:
cml.config.merge({
base: {
dev: {
domain: {
domain1: "localhost",
domain2: "localhost"
},
},
build: {
domain: {
domain1: "http://api.cml.com",
domain2: "http://api2.cml.com"
},
}
},
})
如果我們需要多套構(gòu)建配置,可以自定義一個 media,比如設(shè)置 weex.custom 對象,然后執(zhí)行cml weex custom即可使用你設(shè)置的 custom 配置進行構(gòu)建,但是不會啟動 dev 服務(wù)和 watch。 例如:
cml.config.merge({
weex: {
custom: {
minimize: true, //對打包結(jié)果進行壓縮
moduleIdType: 'name', //編譯的模塊結(jié)果以模塊名字顯示
},
},
});
自定義構(gòu)建配置可配置項和上面介紹的平臺內(nèi)配置項是一樣的,比如同樣支持 publicPath apiPrefix hash minimize anslysis 等;
假如你在構(gòu)建微信小程序端,一個構(gòu)建模式下要求不壓縮代碼,一個構(gòu)建模式下要求顯示模塊名字,那么可以如下配置
cml.config.merge({
wx: {
build: {
minimize: true, //對打包結(jié)果進行壓縮
moduleIdType: 'id', //編譯的模塊結(jié)果以模塊名字顯示
},
custom: {
minimize: false, //對打包結(jié)果進行壓縮
moduleIdType: 'name', //編譯的模塊結(jié)果以模塊名字顯示
},
},
});
執(zhí)行 cml wx build 則打包的代碼會進行壓縮以及模塊名以 id 取名; 執(zhí)行 cml wx custom 則打包的代碼不會壓縮抑菌劑模塊名以該模塊對應的 name 取名
組件導出相關(guān)的配置請參見組件導出介紹。
在chameleon.config.js中可以通過 api 獲取到構(gòu)建之前的 webpack 配置并對其進行修改。使用方式:
cml.utils.plugin('webpackConfig', function({ type, media, webpackConfig }, cb) {
// cb函數(shù)用于設(shè)置修改后的配置
cb({
type,
media,
webpackConfig
});
});
終端 | 關(guān)鍵詞 | 說明 |
---|---|---|
快應用 | quickapp | 手動擴展接入 |
微信小程序 | wx | |
支付寶小程序 | alipay | |
百度小程序 | baidu | |
手機瀏覽器 / WebView | web | |
字節(jié)跳動小程序 | tt | 手動擴展接入 |
QQ 小程序 | ||
Weex | weex |
更多建議: