UNPKG

zoro-cli

Version:

https://github.com/vuejs/vue-cli

118 lines (113 loc) 2.29 kB
module.exports = ({ api, rootOptions, Types }) => { const { mobile, pc, weblib, nodelib, node, ui } = Types; const isWeblib = ({ type }) => type === weblib; const isWebOrWeblib = ({ type }) => type === mobile || type === pc || type === weblib; api.injectTypes([{ name: 'web mobile 项目', value: mobile }, { name: 'web pc 项目', value: pc }, { name: 'web npm library (rollup)', value: weblib }, { name: 'node npm library', value: nodelib }, { name: 'node 项目 (koa/egg/chair 等)', value: node }]); let defaultUI; if (rootOptions.ui === false) { defaultUI = false; } else { defaultUI = isWeblib ? false : ui[0]; } return [{ type: 'list', name: 'ui', message: '选择前端框架', default: defaultUI, when: isWebOrWeblib, choices: () => { const no = { name: '不需要', value: false }; return [no, ...ui]; } }, { type: 'list', name: 'bundler', message: '请选择打包工具', default: rootOptions.bundler, when: isWeblib, choices: [{ value: 'rollup' }, { value: 'webpack' }] }, { name: 'cssPreprocessor', type: 'list', message: 'Pick a CSS pre-processor', default: rootOptions.cssPreprocessor, when: isWebOrWeblib, choices: ({ type }) => { const no = { name: '不需要', value: false }; const cssPreprocessors = [{ name: 'PostCSS', value: 'postcss' }, { name: 'SCSS/SASS', value: 'sass' }, { name: 'LESS', value: 'less' }, { name: 'Stylus', value: 'stylus' }]; return isWeblib({ type }) ? [no, ...cssPreprocessors] : cssPreprocessors; } }, { name: 'rem', type: 'list', message: '是否要开启自动将 px 转 rem 的功能', default: !!rootOptions.rem, // 只要有 cssPreprocessor, 那么就询问是否需要转 rem when: ({ cssPreprocessor }) => !!cssPreprocessor, choices: [{ name: '不开启', value: false }, { name: '开启, 请查阅生成的 postcss.config.js', value: true }] }]; };