Skip to content

Commit

Permalink
feat(qa): init
Browse files Browse the repository at this point in the history
  • Loading branch information
fxy060608 committed Mar 8, 2020
1 parent 6e58ed0 commit ffcf467
Show file tree
Hide file tree
Showing 34 changed files with 779 additions and 3 deletions.
77 changes: 77 additions & 0 deletions build/build.qa.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
const fs = require('fs')
const del = require('del')
const path = require('path')
const copy = require('copy')
const rollup = require('rollup')

const genConfig = require('./rollup.config.qa')

const filename = 'vue.' + (process.env.NODE_ENV === 'production' ? 'prod' : 'dev') + '.js'

async function build () {
const bridgeBundle = await rollup.rollup(genConfig('bridge'))
const {
output: bridgeOutput
} = await bridgeBundle.generate({
format: 'iife'
})
const bridgeCode = bridgeOutput[0].code
const appBundle = await rollup.rollup(genConfig('app'))
const {
output: appOutput
} = await appBundle.generate({
format: 'iife',
banner: `
dsl.onInitApp(function({
inst,
context,
instRequireModule
}) {
if(!context.quickapp.dock.makeEvaluateBuildScript){
context.quickapp.dock.makeEvaluateBuildScript = args => args
}
const $app_require$ = instRequireModule;
`,
footer: `
});`
})
const appCode = appOutput[0].code
// const pageBundle = await rollup.rollup(genConfig('page'))
// const {
// output: pageOutput
// } = await pageBundle.generate({
// format: 'iife',
// banner: `
// dsl.onInitPage(function({
// $app_require$,
// Vue
// }) {
// `,
// footer: `
// });`
// })
// const pageCode = pageOutput[0].code
const vueCode = fs.readFileSync(path.resolve(__dirname, '../packages/uni-quickapp/lib/' + filename))

fs.writeFileSync(
path.resolve(__dirname, '../packages/uni-quickapp/lib/dsls/' + filename),
vueCode + bridgeCode + appCode, {
encoding: 'utf8'
}
)

if (process.env.NODE_ENV === 'production') { // 命令会执行dev,prod两次,仅prod时执行copy
const componentsSrc = path.resolve(__dirname, '../src/platforms/quickapp/view/components/**/*')
const componentsDest = path.resolve(__dirname, '../packages/uni-quickapp/lib/components')

del.sync([componentsDest])

copy(componentsSrc, componentsDest, function (err, file) {
if (err) {
throw err
}
})
}
}

build()
72 changes: 72 additions & 0 deletions build/rollup.config.qa.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
const path = require('path')
const alias = require('rollup-plugin-alias')
const replace = require('rollup-plugin-replace')
const nodeResolve = require('rollup-plugin-node-resolve')
const commonjs = require('rollup-plugin-commonjs')
const terser = require('rollup-plugin-terser')
const requireContext = require('../lib/rollup-plugin-require-context')

process.env.UNI_PLATFORM = 'quickapp'

const external = []

const resolve = dir => path.resolve(__dirname, '../', dir)

function replaceModuleImport (str) {
return str.replace(
/require\s*\(\s*(['"])@([\w$_][\w$-.]*?)\1\)/gm,
(e, r, p) => `$app_require$(${r}@app-module/${p}${r})`
).replace(
/import\s+([\w${}]+?)\s+from\s+(['"])@([\w$_][\w$-.]*?)\2/gm,
(e, r, p, t) => `var ${r} = $app_require$(${p}@app-module/${t}${p})`
)
}

const plugins = [{
name: 'replaceModuleImport',
transform (source) {
return {
code: replaceModuleImport(source)
}
}
},
alias({
'uni-core': resolve('src/core'),
'uni-platform': resolve('src/platforms/' + process.env.UNI_PLATFORM),
'uni-platforms': resolve('src/platforms'),
'uni-shared': resolve('src/shared/index.js'),
'uni-helpers': resolve('src/core/helpers'),
'uni-invoke-api': resolve('src/platforms/quickapp/service/invoke-api'),
'uni-service-api': resolve('src/platforms/quickapp/service/api'),
'uni-api-protocol': resolve('src/core/helpers/protocol')
}),
nodeResolve(),
requireContext(),
commonjs(),
replace({
__PLATFORM__: JSON.stringify(process.env.UNI_PLATFORM),
__PLATFORM_TITLE__: '快应用'
})
]

// if (process.env.NODE_ENV === 'production') {
plugins.push(terser.terser())
// }

module.exports = function (type) {
let input = ''

if (type === 'bridge') {
input = 'src/platforms/quickapp/runtime/bridge.js'
} else if (type === 'app') {
input = 'src/platforms/quickapp/runtime/app.js'
} else if (type === 'page') {
input = 'src/platforms/quickapp/runtime/page.js'
}

return {
input,
plugins,
external
}
}
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"build:mp-toutiao": "cross-env UNI_PLATFORM=mp-toutiao rollup -c build/rollup.config.mp.js",
"build:mp-weixin:mp": "npm run lint && cross-env UNI_PLATFORM=mp-weixin UNI_MP=true rollup -c build/rollup.config.mp.js",
"build:mp-weixin:wxs": "rollup -c build/rollup.config.wxs.js",
"build:quickapp": "cross-env NODE_ENV=development node build/build.qa.js && cross-env NODE_ENV=production node build/build.qa.js",
"build:runtime": "npm run lint && npm run build:mp-weixin && npm run build:mp-qq && npm run build:mp-alipay && npm run build:mp-baidu && npm run build:mp-toutiao && npm run build:app-plus",
"build:stat": "npm run lint && rollup -c build/rollup.config.stat.js",
"build:web-view": "npm run lint && rollup -c build/rollup.config.web-view.js",
Expand Down Expand Up @@ -70,8 +71,10 @@
"rollup-plugin-alias": "^1.4.0",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-commonjs": "^10.0.1",
"rollup-plugin-inject": "^3.0.2",
"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-replace": "^2.1.0",
"rollup-plugin-terser": "^5.2.0",
"rollup-plugin-uglify": "^6.0.3",
"shell-exec": "^1.0.2",
"strip-json-comments": "^2.0.1",
Expand Down Expand Up @@ -139,4 +142,4 @@
"main": "index.js",
"description": "",
"author": ""
}
}
19 changes: 18 additions & 1 deletion packages/uni-cli-shared/lib/platform.js
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,23 @@ const PLATFORMS = {
...getCopyOptions(['ttcomponents'])
]
}
},
'quickapp': {
vue: '@dcloudio/vue-cli-plugin-uni/packages/h5-vue',
subPackages: false,
cssVars: {
'--status-bar-height': '25px',
'--window-top': '0px',
'--window-bottom': '0px'
},
copyWebpackOptions ({
assetsDir
}) {
return [
...getStaticCopyOptions(assetsDir),
...getCopyOptions(['qacomponents'])
]
}
}
}
// 解决 vue-cli-service lint 时 UNI_PLATFORM 不存在
Expand Down Expand Up @@ -579,7 +596,7 @@ module.exports = {
mergeLonghand: false,
mergeRules: false,
cssDeclarationSorter: false,
uniqueSelectors: false, // 标签排序影响头条小程序
uniqueSelectors: false, // 标签排序影响头条小程序
minifySelectors: false, // 标签排序影响头条小程序
discardComments: false,
discardDuplicates: false // 条件编译会导致重复
Expand Down
Loading

0 comments on commit ffcf467

Please sign in to comment.