首页 > 其他分享 >webpack打包自动上传到指定目录

webpack打包自动上传到指定目录

时间:2023-06-25 15:12:47浏览次数:33  
标签:function console log 传到 exeShell webpack return 打包

webpack打包生成一个静态目录文件,可以通过webpack将打包的文件移到指定目录文件进行提交,自动化构建上传

编写一个webpack插件

build.after.js

const pluginName = 'ConsoleLogOnBuildWebpackPlugin';
let fs = require('fs-extra');
const process = require('process');
const exeShell = require('./shell');



class ConsoleLogOnBuildWebpackPlugin {

    constructor(staticDir,staticPath,remoteConfig) {
        this.staticDir = staticDir || 'vue'; //指定文件名
        this.staticPath = staticPath || 'E:/blog/my_vue/disttest';//指定目录
        if(remoteConfig) {
            this.remoteConfig = remoteConfig;
        } else {
            this.remoteConfig = {
                "username":"xxx",
                "password":"xxx",
                "host":"xxx",
                "port":"xxx"
            };
        }
    }

    apply(compiler) {

        compiler.hooks.run.tap(pluginName, compilation => {
            console.log("webpack 构建过程开始!");
        });

        compiler.hooks.done.tap(pluginName,compilation=>{
            let distPath = compilation.compilation.outputOptions.path;
            console.log(distPath);
            console.log("webpack 构建结束,自动复制代码");

            var buildCDN = ()=>{
                console.log('开始处理cdn文件...');
                process.chdir(this.staticPath);
                return exeShell("git",['pull','--rebase','origin','master']).then(()=>{
                    console.log('更新文件成功...');
                    return fs.remove(this.staticPath + '/' + this.staticDir)
                }).then(() => {
                    return fs.copy(distPath, this.staticPath + '/' + this.staticDir);
                }).then(() => {
                    console.log('文件复制成功!');
                    console.log('提交静态文件...');
                    process.chdir(this.staticPath);
                    return exeShell('git', ['add', '.'])
                }).then(function () {
                    console.log('add success');
                    return exeShell('git', ['commit', '-m', 'vue-build dev_test']);
                }).then(function () {
                    console.log('commit success ');
                    return exeShell("git", ['pull', '--rebase', 'origin', 'master']);
                }).then(function () {
                    console.log('pull success ');
                    return exeShell("git", ['push', 'origin', 'master']);
                }).then(function () {
                    console.log('push success ');
                })
            };

            buildCDN();
        });
    }
}

module.exports = ConsoleLogOnBuildWebpackPlugin;

shell.js

function exeShell(path,params) {
    return new Promise(function (res,rej) {
        var spawn = require('child_process').spawn;
        var addProcess = spawn(path,params);

        var resultBuffer = [];
        addProcess.stderr.on('data',function (data) {
            resultBuffer.push(data);
        });
        addProcess.stdout.on('data',function (data) {
            resultBuffer.push(data);
        });
        addProcess.on('exit',function () {
            res(Buffer.concat(resultBuffer).toString())
        })
    });
}
module.exports = exeShell;

vue.config.js配置使用

const BuildAfter = require('./src/build/build.after');

  chainWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      config.plugin('build-after').use(BuildAfter, ['', '', '']);
    }
  },

路径根据自己的目录定义,实现一个简单的自动化构建

标签:function,console,log,传到,exeShell,webpack,return,打包
From: https://www.cnblogs.com/lijun12138/p/17502947.html

相关文章

  • 用node-webkit把web应用打包成桌面应用
    1.下载node-webkit:https://github.com/nwjs/nw.js=>下载完成后是个压缩包。解压即可。=>看到nw.exe文件,双击运行一下,看是否正常=>exe文件的图标可以用ResourceHacker,nw-builder和node-winresourcer之类的工具替换。 2.项目新建package.json:{  "name":"zqz",//这里......
  • 【webpack系列】从基础配置到掌握进阶用法
    前言本篇文章将介绍一些webpack的进阶用法,演示内容继承自上一篇文章的内容,所以没看过上一篇文章的建议先学习上一篇内容再阅读此篇内容,会更有利于此篇的学习~文件指纹文件指纹指的是打包输出的文件名后缀,一般用来做版本管理、缓存等webpack的指纹策略有三种:hash、chunkhash......
  • 在PyInstaller中打包Python代码
    在PyInstaller中打包Python代码在实际开发中,我们经常需要将Python代码打包成可独立运行的可执行文件,以便更方便地分享和部署。PyInstaller是一个常用的Python打包工具,可以将Python脚本打包成单个可执行文件。以下是如何使用PyInstaller打包Python代码的步骤:安装PyInstaller,使用......
  • dpkg 解包 重新打包
    1.把包控制脚本解包出来    dpkg-deb -e  nano.deb  nano/DEBIAN2. 把程序解包出来     dpkg-deb -x  nano.deb  nano3.重新打包  dpkg-deb  -b  nano  nano_2.deb    control字段信息说明package:程序名称,中间......
  • 基于深度学习的文本分类6大算法-原理、结构、论文、源码打包分享
    导读:文本分类是NLP领域一项基础工作,在工业界拥有大量且丰富的应用场景。传统的文本分类需要依赖很多词法、句法相关的human-extractedfeature,自2012年深度学习技术快速发展之后,尤其是循环神经网络RNN、卷积神经网络CNN在NLP领域逐渐获得广泛应用,使得传统的文本分类任务变得更加容......
  • GoLang在不同系统打包
    配置Mac下编译Linux,Windows平台的64位可执行程序:goenv-wCGO_ENABLED=0GOOS=linuxGOARCH=amd64goenv-wCGO_ENABLED=0GOOS=windowsGOARCH=amd64Linux下编译Mac,Windows平台的64位可执行程序:goenv-wCGO_ENABLED=0GOOS=darwinGOARCH=amd64goenv-wCGO_E......
  • 将python程序打包为exe可执行文件方法
    将py打包为exe文件需要依赖pyinstaller第三方库-F:打包后只生成单个exe格式文件;-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;-c:默认选项,使用控制台(就是类似cmd的黑框);-w:不使用控制台;-p:添加搜索路径,让其找到对应的库;-i:改变生成程序的icon图标。1.单个py文件编......
  • 使用pyinstaller打包python为exe文件
    将Python图形界面程序打包成可执行文件,可以在没有Python环境的电脑上运行,可以使用PyInstaller或者cx_Freeze等工具。使用PyInstaller打包Python程序首先,在命令行中安装PyInstaller:pipinstallpyinstaller在命令行中进入Python程序所在目录。输入以下命令:pyinstaller--onef......
  • 【干货分享】全套Android学习笔记+最新大厂面试真题合集,打包领取
    笔者是一名普通的软件开发人员,一向不喜欢高高在上或者晦涩难懂的理论。我认为知识的本身也应该是通俗易懂的,用晦涩难懂的东西去描述,是对人类进步的阻碍,是知识垄断。笔者希望此系列教程能够以工程实现为出发点和落脚点,简化理论知识,化繁为简地解析Android相关知识点,为各位读者成长为......
  • 前端JS zip打包文件并下载,图片url转base64
    使用jszip这个项目实现的:https://github.com/Stuk/jszipFileSaver.js项目地址是:https://github.com/eligrey/FileSaver.js/<scriptsrc="./FileSaver.min.js"></script><scriptsrc="./jszip.min.js"></script>//初始化一个zip打包对象varzi......