vue-cli-plugin-winupon
Version:
winpuon vue-cli3 plugin
105 lines (103 loc) • 3.33 kB
JavaScript
const fs = require("fs");
module.exports = (api, opts, rootOptions) => {
const utils = require("./utils")(api);
// 使用 wpFront 模板
if (opts.frame === "WpFront") {
if (opts.platform === "webapp") {
api.render("./templates/wpFront/webpapp");
} else if (opts.platform === "pc") {
api.render("./templates/wpFront/pc");
}
if (opts.winuponUI) {
}
// 使用 vue-cli 模板
} else if (opts.frame === "vueCli") {
// 使用移动端
if (opts.platform === "webapp") {
api.extendPackage({
devDependencies: {
axios: "^0.19.0",
cssnano: "^3.10.0",
"cssnano-preset-advanced": "^4.0.7",
fastclick: "^1.0.6",
"postcss-aspect-ratio-mini": "0.0.2",
"postcss-import": "^12.0.1",
"postcss-preset-env": "^6.6.0",
"postcss-px-to-viewport": "0.0.3",
"postcss-url": "^8.0.0",
"postcss-viewport-units": "^0.1.6",
"postcss-write-svg": "^3.0.1",
vconsole: "^3.3.0",
"viewport-units-buggyfill": "^0.6.2"
}
});
api.injectImports(api.entryFile, [
`import fastclick from "fastclick";`,
`import VConsole from "vconsole";`,
`import fetch from "./utils/request";`
]);
api.render({
"./src/App.vue": "./templates/vueCli/webapp/src/App.vue",
"./.browserslistrc": "./templates/vueCli/webapp/.browserslistrc",
"./postcss.config.js": "./templates/vueCli/webapp/postcss.config.js",
"./src/utils/request.js":
"./templates/vueCli/webapp/src/utils/request.js"
});
utils.addJsData(api.entryFile, [
``,
`fastclick.attach(document.body);`,
`const vConsole = new VConsole();`,
`Vue.use(fetch);`
]);
utils.updateVueConfig({
publicPath: "./",
devServer: {
// 设置代理
proxy: {
"/api": {
target: "https://host:port",
secure: false,
changOrigin: true,
pathRequiresRewrite: {
"^/api": "/"
}
}
}
}
});
// 使用pc端
} else if (opts.platform === "pc") {
api.extendPackage({
devDependencies: {
axios: "^0.19.0",
cssnano: "^3.10.0",
"cssnano-preset-advanced": "^4.0.7",
"postcss-aspect-ratio-mini": "0.0.2",
"postcss-import": "^12.0.1",
"postcss-preset-env": "^6.6.0",
"postcss-url": "^8.0.0",
vconsole: "^3.3.0"
}
});
api.render({
"./src/App.vue": "./templates/vueCli/pc/src/App.vue",
"./.browserslistrc": "./templates/vueCli/pc/.browserslistrc",
"./postcss.config.js": "./templates/vueCli/pc/postcss.config.js",
"./src/utils/request.js": "./templates/vueCli/pc/src/utils/request.js"
});
}
if (opts.winuponUI) {
}
}
api.onCreateComplete(() => {
if (opts.frame === "WpFront") {
fs.rename(
api.resolve("./packages/module"),
api.resolve(`./packages/${opts.name}`),
err => {
if (err) throw err;
}
);
}
});
};