@egova/vue-cli-plugin-egova-starter-template
Version:
egova starter template plugin for vue-cli ^3.0.0~
119 lines (108 loc) • 3.36 kB
JavaScript
const fs = require("fs-extra")
const path = require("path")
const dir = __dirname + "/template/"
const base = process.cwd()
const rimraf = dir_path => {
if (fs.existsSync(dir_path)) {
fs.readdirSync(dir_path).forEach(function(entry) {
var entry_path = path.join(dir_path, entry)
if (fs.lstatSync(entry_path).isDirectory()) {
rimraf(entry_path)
} else {
fs.unlinkSync(entry_path)
}
})
fs.rmdirSync(dir_path)
}
}
const walk = (p, fileCallback, errCallback) => {
fs.readdir(p, (err, files) => {
if (err) {
errCallback(err)
return
}
files.forEach(file => {
const fullPath = path.join(p, file)
if (fs.statSync(fullPath).isDirectory()) {
walk(fullPath, fileCallback)
} else {
fileCallback(fullPath)
}
})
})
}
module.exports = (api, opts) => {
try {
if (opts.deleteSrc) {
rimraf(path.join(base, "src"))
}
let filename = path.join(base, "webpack.lib.conf.js")
if (fs.existsSync(filename)) {
fs.unlinkSync(filename)
}
} catch (error) {}
api.extendPackage({
dependencies: {
axios: "^0.18.0",
"flagwind-core": "^1.1.0",
"@egova/flagwind-echarts": "^1.0.1",
"@egova/flagwind-web": "^1.0.14",
iview: "^3.2.2",
echarts: "^4.1.0",
"js-cookie": "^2.2.0",
vue: "^2.5.22",
"vue-class-component": "^6.0.0",
"vue-property-decorator": "^7.0.0",
"vue-router": "^3.0.2",
vuex: "^3.1.0"
},
devDependencies: {
"@egova/vue-cli-plugin-dll": "^1.1.7",
"@types/js-cookie": "^2.2.1",
"@types/node": "^11.9.4",
"@vue/cli-plugin-babel": "^3.4.0",
"@vue/cli-plugin-typescript": "^3.4.0",
"@vue/cli-service": "^3.4.0",
"add-asset-html-webpack-plugin": "^3.1.3",
"compression-webpack-plugin": "^2.0.0",
"friendly-errors-webpack-plugin": "^1.7.0",
"raw-loader": "^1.0.0",
sass: "^1.17.0",
"sass-loader": "^7.1.0",
"style-resources-loader": "^1.2.1",
"tslint-config-flagwind": "^1.0.1",
"tslint-loader": "^3.5.4",
typescript: "^3.3.3",
"vue-cli-plugin-style-resources-loader": "^0.1.3",
"vue-template-compiler": "^2.5.21",
"webpack-cli": "^3.2.3"
},
scripts: {
serve: "vue-cli-service serve",
build: "vue-cli-service build",
lint: "vue-cli-service lint",
"build:serve": "http-server ./dist -a 127.0.0.1 -p 5050",
dll: "vue-cli-service dll"
}
})
api.render("./template")
let templates = []
const fileCallback = path => {
const simplePath = path.replace(dir, "")
templates.push(simplePath)
}
const errCallback = err => console.log("Receive err:" + err)
walk(dir, fileCallback, errCallback)
api.postProcessFiles(files => {
const fileList = Object.keys(files)
const srcFileList = fileList.filter(file => /^src\\/.test(file))
const originals = srcFileList.filter(
file => !templates.includes(file) && !/^src\/legacy\ /.test(file)
)
originals.forEach(file => {
const currentPath = api.resolve(file)
const newPath = currentPath.replace("/src/", "/src/legacy/")
fs.move(currentPath, newPath)
})
})
}