多页面打包

webpack 多打包

经过三天的努力,终于完成了!下面就开始介绍
首先我们先介绍为什么用 webpack,webpack可以为老项目带来什么

  1. 我们的目标是,不用手动改配置,因为像老的项目,环境又多,技术又老旧。为了完成我的重构大计划,首先先节省不必要的时间,方便我们开发的同学从此不在纠结环境的问题,也方便自己,为了不出现之前的问题,第一步增加打包编译,配置文件就教给机器
  2. 开始规划,我们项目目录结构不能变,因为嵌套在 App 里面,随意改动原生获取不到文件(痛苦啊)
  3. 第一步想要之前的目录结构,单页面,完成的按照之前的结果输出
  4. 第二步增加环境变量,只需要一条命令可以解决,可以解决 一堆文件的配置
  5. 第三步可以增加压缩代码,增加代码混淆,增加 less ,sacss 等

1. 多页面打包

  1. 首先安装 webpack ,我这里安装的是
    "devDependencies": {
    "clean-webpack-plugin": "^3.0.0", 
    "copy-webpack-plugin": "^8.1.0", // 多页面打包主要工具
    "cross-env": "^7.0.3", // 命令控制主要工具
    "glob": "^7.1.6", 
    "html-webpack-plugin": "^5.3.1",
    "mini-css-extract-plugin": "^1.4.0",
    "optimize-css-assets-webpack-plugin": "^5.0.3",
    "webpack": "^5.28.0",
    "webpack-cli": "^4.6.0",
    "webpack-dev-server": "^3.10.1" // 可以开启测试环境服务
    }
  2. 第二步增加 webpack.config.js
    module.exports = {
    mode: "none",
    context: process.cwd(),
    entry: "xx/xx", // 入口文件最好是配置文件,方便环境变量
    output: {  // 出口配置
    path: 'xx',
    filename: "xxx", // 
    },
    plugins: [
    new webpack.DefinePlugin({
      "VERSION": JSON.stringify("5fa3b9"), // 此为环境变量
    }),
    new CopyWebpackPlugin({ // 下面是各个文件的输出,里面可以加入,混淆,压缩等操作
      patterns: [
        {
          from: path.join(__dirname, "app/static/"),
          to: "static",
        },
        {
          from: path.join(__dirname, "app/html/"),
          to: "html",
        },
        {
          from: path.join(__dirname, "app/static/images/"),
          to: "static/images",
        },
      ],
    }),
    ].concat(copyMultipleHtml(htmlArr)), // copyMultipleHtml 为个人封装入口配置文件自定义内容(不方便展示)
    devServer: { // 服务
    contentBase: path.resolve(__dirname, "dist"),
    host: "localhost",
    port: "8080",
    compress: false,
    },
    };
  3. 这样 webpack 打包就完成了 ,目录输出完美,我们开始增加自己的东西了
    目前我们的命令是执行

    webpack

    就可以了,现在我们需要传入参数,增加环境变量,就需要 cross-env 这个插件,首先我们安装

    npm install cross-env --save-dev

    然后我们改变命令传入环境变量 package.json 改变命令

  "scripts": {
    "prd": "cross-env NODE_ENV=prd webpack"
  },

在 webpack.config.js 里面就可以通过 process.env.NODE_ENV 渠道 prd 的参数
我们就可以像些 js 或者 node 一样 增加判断就好了... (哈哈哈)

  • 这样我们就可以在入口文件中增加 环境变量了(注:这样只能在入口文件增加的环境变量才起作用,负责需要在 CopyWebpackPlugin 这个插件里面增加)

1. 创建合并分支

1. 分支介绍

    git 每次提交都是一条时间线,称之为分支,在 git 这个分支为主分支 master 分支。

     HEAD 严格来说并不是指向提交,而是指向 master ,master 才是指向提交。所以 HEAD 指向当前分支。

2. 分支提交   

    当 git 创建分支,例如 dev 事,新建一个 dev 的指针,改 HEAD 指向 ,工作区的文件没有任何变化,不过从现在开始, 对工作区的修改和提交就针对 dev 分支了,如新的一次提交 dev 指针向前移步, 而 master 指针不变。

    之后我们就可以,合并分支删除 dev 

3. 代码练习

// 创建 dev 分支, 然后切换到 dev 分支;

    git checkout -b dev

// git checkout 命令加上 -b 参数表示创建并切换,相当于一下两条命令

    git branch dev

    git checkout dev

// 然后使用 git branch 查看分支,当前分支前面会有一个 * 号。

    git branch 

// 切换回 master 分支

    git checkout master

// 删除分支

    git branch -d dev

4. 冲突处理

// 合并分支

    git merge featurel

    $CONFLICT (content): Merge conflict in readme.txt
    $Automatic merge failed; fix conflicts and then commit the result.

告诉我们 readme.txt 文件发生冲突,必须手动解决冲突

// git status 也可以告诉我们冲突的文件

    git status 

$On branch master
$Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

$You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

$Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   readme.txt

$no changes added to commit (use "git add" and/or "git commit -a")

我们可以直接查看 readme.txt 内容

git 用 <<<<<<< ======= >>>>>>> 标记出不同分支内容,修改后保存

再提交:

    git add .

    git commit -m"修改文件"

// 用 git log 查看合并情况情况

    git log -graph -pretty=oneline -abbre-commit 

// 最后删除分支

    git branch -d featurel

    

       

git 用了好久,但是都比较粗浅,记忆并不深刻,准备好好整理一下

Git 第一步

1. 每次初始化一个厂库,很简单 

git init 

2.  新建一个文件,把文件添加到厂库, 命令 git add

git add 文件名

3. 用命令 git commit 提交到厂库

git commit -m "第一次提交" // -m "这里是提交的描述"

-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。

git commit 命令执行成功后会告诉你,1个文件被改动(我们新添加的 文件),插入了两行内容( 有两行内容)。

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件

Git 时光机回退

回到过去

1. 在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard HEAD^

2. 最新的那个版本 已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?

 办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊 就可以指定回到未来的某个版本。

git reset --hard 版本号  

版本号没有必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为 Git 可能会找多个版本号,就无法确定是哪一个了

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针。 现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

在Git中,总是有后悔药可以吃的。当你用git reset --hard HEAD^ 回退到 某个 版本时,再想恢复到 以前版本 ,就必须找到 commit id。Git提供了一个命令git reflog用来记录你的每一次命令。


git reflog

  • HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id。

  • 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。

  • 要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。