提交 39b5f12a 编写于 作者: fxy060608's avatar fxy060608

feat(cli): add invoke

上级 8e55ca87
#!/usr/bin/env node
const path = require('path')
const {
error
} = require('@vue/cli-shared-utils')
const {
initCustomScript
} = require('@dcloudio/uni-cli-shared/lib/package')
const Service = require('@vue/cli-service')
#!/usr/bin/env node
const yargsParser = require('yargs-parser')
const argv = yargsParser(process.argv.slice(2))
if (argv._[0] === 'custom') {
const script = argv._[1]
if (!script) {
console.error(`请指定 package.json->uni-app->scripts 下的 script 名称`)
process.exit(0)
}
const scriptOptions = initCustomScript(script, path.resolve(process.cwd(), 'package.json'))
if (scriptOptions && scriptOptions.title) {
// console.log('>' + scriptOptions.title)
}
const action = argv._[0]
if (action === 'custom') {
require('../lib/commands/custom')(argv)
} else if (action === 'invoke') {
require('../lib/commands/invoke')(argv)
} else {
console.error(`uniapp-cli custom script`)
process.exit(0)
}
// @vue/cli-service/lib/Service.js
const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
const command = (
process.env.NODE_ENV === 'development' &&
process.env.UNI_PLATFORM === 'h5'
) ? 'uni-serve'
: 'uni-build'
service.run(command, {
watch: process.env.NODE_ENV === 'development',
minimize: process.env.UNI_MINIMIZE === 'true',
clean: false
}).catch(err => {
error(err)
process.exit(1)
})
}
const path = require('path')
const Service = require('@vue/cli-service')
const {
initCustomScript
} = require('@dcloudio/uni-cli-shared/lib/package')
module.exports = function custom (argv) {
const script = argv._[1]
if (!script) {
console.error(`请指定 package.json->uni-app->scripts 下的 script 名称`)
process.exit(0)
}
const scriptOptions = initCustomScript(script, path.resolve(process.cwd(), 'package.json'))
if (scriptOptions && scriptOptions.title) {
// console.log('>' + scriptOptions.title)
}
// @vue/cli-service/lib/Service.js
const service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
const command = (
process.env.NODE_ENV === 'development' &&
process.env.UNI_PLATFORM === 'h5'
) ? 'uni-serve'
: 'uni-build'
service.run(command, {
watch: process.env.NODE_ENV === 'development',
minimize: process.env.UNI_MINIMIZE === 'true',
clean: false
}).catch(err => {
console.error(err)
process.exit(1)
})
}
const fs = require('fs')
const path = require('path')
module.exports = async function add (argv) {
const pluginName = argv._[1]
if (!pluginName) {
console.error(`请指定插件名称`)
process.exit(0)
}
const pluginPkg = require(pluginName + '/package.json')
const options = pluginPkg['uni-app']
if (!options) {
console.error(`插件不合法`)
process.exit(0)
}
const name = options.name
if (!name) {
console.error(`插件名称不存在`)
process.exit(0)
}
const scripts = options.scripts || {
['dev:' + name]: `cross-env NODE_ENV=development UNI_PLATFORM=${name} vue-cli-service uni-build --watch`,
['build:' + name]: `cross-env NODE_ENV=production UNI_PLATFORM=${name} vue-cli-service uni-build`
}
const pkgPath = path.resolve(process.cwd(), 'package.json')
const pkg = require(pkgPath)
if (!pkg.scripts) {
pkg.scripts = {}
}
let changed = false
Object.keys(scripts).forEach(script => {
if (!pkg.scripts[script]) {
changed = true
pkg.scripts[script] = scripts[script]
}
})
if (changed) {
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2))
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册