diff --git a/package.json b/package.json index 56cda99..bae9cdc 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", - "lib": "vue-cli-service build --target lib --name zee --dest lib packages/index.js" + "lib": "vue-cli-service build --target lib --name zee --dest lib packages/index.js", + "release": "node webpack/release.js" }, "dependencies": { "axios": "^0.19.2", @@ -36,6 +37,7 @@ "markdown-it": "^11.0.0", "markdown-it-anchor": "^5.3.0", "markdown-it-container": "^3.0.0", + "ora": "^4.0.5", "sass": "^1.26.8", "sass-loader": "^8.0.2", "transliteration": "^2.1.11", diff --git a/webpack/release.js b/webpack/release.js new file mode 100644 index 0000000..be707b2 --- /dev/null +++ b/webpack/release.js @@ -0,0 +1,57 @@ +const fs = require('fs'); +const ora = require('ora'); +const path = require('path'); +const { exec } = require('child_process'); + +const outputPath = path.resolve(__dirname, '../release'); + +// 删除文件夹 +const delPath = path => { + if (!path.includes(process.cwd())) { + console.log('只能操作当前项目'); + throw path; + } + const info = fs.statSync(path); + if (info.isDirectory()) { + // 目录 + const data = fs.readdirSync(path); + if (data.length > 0) { + data.forEach((f, i) => { + delPath(`${path}/${f}`); // 使用递归 + if (i == data.length - 1) { + // 删了目录里的内容就删掉这个目录 + delPath(`${path}`); + } + }); + } else { + fs.rmdirSync(path); // 删除空目录 + } + } else if (info.isFile()) { + fs.unlinkSync(path); // 删除文件 + } +}; + +// 清除输出目录 +if (fs.existsSync(outputPath)) { + delPath(outputPath); +} + +const cmd = 'vue-cli-service build --target lib --name zee --dest release packages/index.js'; + +const spinner = ora('编译中...').start(); + +exec(cmd, function(error, stdout, stderr) { + if (error) { + throw error; + } + fs.readdirSync(outputPath).forEach(file => { + if (file !== 'zee.css') { + if (file === 'zee.umd.min.js') { + fs.renameSync(path.resolve(outputPath, file), path.resolve(outputPath, 'zee.js')); + } else { + fs.unlinkSync(path.resolve(outputPath, file)); + } + } + }); + spinner.succeed('编译完成'); +}); diff --git a/yarn.lock b/yarn.lock index 3ef3b97..e65a769 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2708,6 +2708,11 @@ cli-spinners@^2.0.0: resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" integrity sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c= +cli-spinners@^2.2.0: + version "2.4.0" + resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.4.0.tgz?cache=0&sync_timestamp=1595080390100&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" + integrity sha1-xiVtsha4eM+6RyDnGc7Hz3JoXX8= + cli-truncate@2.1.0, cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -5372,6 +5377,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-interactive/download/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5923,6 +5933,13 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-3.0.0.tgz?cache=0&sync_timestamp=1589682056270&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q= + dependencies: + chalk "^2.4.2" + log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -6789,6 +6806,20 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +ora@^4.0.5: + version "4.0.5" + resolved "https://registry.npm.taobao.org/ora/download/ora-4.0.5.tgz?cache=0&sync_timestamp=1594997490641&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-4.0.5.tgz#7410b5cc2d99fa637fd5099bbb9f02bfbb5a361e" + integrity sha1-dBC1zC2Z+mN/1Qmbu58Cv7taNh4= + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + original@^1.0.0: version "1.0.2" resolved "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" -- libgit2 0.21.0