webpack,3,4,5构建工具

webpack:构建工具

  • 构建工具:常用场景:react / vue

  • 自带模块化(commonJS规范)

  • 自带服务器,服务器也是基于node(webpack-Dev-server)

  • 编译:es6->es5;jsx->es5;ts(typescript)->js

  • gulp所做的事情,webpack都可以做到

  • 中文文档:概念 | webpack 中文网

  • 安装3.x

    •   cnpm install -g webpack@3.x // 全局安装
        npm init//创建package.json

      - 创建两个文件夹src和dist​
        - src:源码文件
        - dist:压缩过后文件
      ​
      - 执行webpack​
         webpack  src/app.js   dist/bundle.js
    • 快捷执行

      "scripts": {
          "build": "webpack"
        }
      var path = require('path');
      const config = {
        entry: './src/app.js',
        output: {
          path: path.resolve(__dirname,'dist'),
          filename: 'bundle.js'
        }
      };
      module.exports = config;

Webpack 5 

使用
创建两个应用 app1 和 app2

mkdir app1
cd app1
npm init -y

npm install webpack webpack-cli html-webpack-plugin webpack-dev-server -D
然后创建 src 目录,并创建入口文件 ./src/index.js 和模板文件 ./src/index.html 



2021/12/29 

在 webpack.config.js 中,使用联邦模块插件 

暴露-app1

const { resolve } = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
// 导入模块联邦插件
const Mfp = require('webpack').container.ModuleFederationPlugin;

module.exports = {
    // mode 工作模式
    mode: 'development',

    // 入口
    entry: './src/index.js',

    // 出口
    output: {
        path: resolve(__dirname, 'dist'),
        filename: 'bundle.js'
    },

    // 模块
    module: {
        rules: [

        ]
    },

    // 插件
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html'
        }),
        new Mfp({
            // 对外提供的打包后的文件名(引入时使用)
            filename: 'app1.js',
            // 当前应用模块名称
            name: 'app1',
            // 暴露模块
            exposes: {
                // 名称: 代码路径
                './Sitename': './src/SiteName.js',

            }
        })
    ],

    // 服务器
    devServer: {
        // contentBase: resolve(__dirname, 'dist'),
        static: { // static: ['assets']
            directory: resolve(__dirname, 'dist')
        },
        port: 3001,
        open: true
    }
}
export default  (name)=>{
    console.log('app1',name)
    const div=document.createElement('div');
    div.textContent=name;
    return div
    // document.body.appendChild(div);
}

使用方

const { resolve } = require('path')
const HtmlWebpackPlugin=require('html-webpack-plugin');
const ModuleFederationPlugin=require('webpack').container.ModuleFederationPlugin;

module.exports={
    mode:'development',
    entry:'./src/index.js',
    output:{
        path:resolve(__dirname,'dist'),
        filename:'bundle.js'
    },
    module:{
      rules:[]
    },
    plugins:[
         new HtmlWebpackPlugin({
             template:'./src/index.html'
         }),
         new ModuleFederationPlugin({
             filename:'app2.js',
             name:'app2',
             exposes:{},
             remotes:{
                 'test':'app1@http://localhost:3001/app1.js'------------这里
             }
         })
    ],
    devServer:{
        port:3002,
        open:true,
        static:{
            directory: resolve(__dirname,'dist')
        }
    }

}
// 调用 app1 中的模块
import('test/Sitename').then(res => {
    // res.default()
    const title = res.default('应用 B')
    document.body.append(title)
})

拉取less

cnpm install --save less less-loader

建议初始化状态拉取配置
cnpm run eject
如果报git错,删除.git文件
dev.js同样prod自己找,差不多,但不完全一样webpack.config.js

const lessRegex = /\.(less)$/;
const lessModuleRegex = /\.module\.(less)$/;
 // less配置
{
    test: lessRegex,
    exclude: lessModuleRegex,
    use: getStyleLoaders({ importLoaders: 2 }, 'less-loader'),
},
{
    test: lessModuleRegex,
    use: getStyleLoaders(
        {
            importLoaders: 2,
            modules: true,
            getLocalIdent: getCSSModuleLocalIdent,
        },
        'less-loader'
    ),
},

GIT

  • https://www.liaoxuefeng.com/wiki/参考站点

  • 安装:git:分布式版本管理系统

  • 在项目下,鼠标右击使用git bash

  • 初始化(创建版本库):git init 会出现.git

  • pwd 会显示目录路径:请不要使用中文

  • who you are

      git config --global user.name "Your Name"
      git config --global user.email "email@example.com"
       
      git config --global user.name "晁阳"
      git config --global user.email "2279679717@qq.com"
    
      git add hello.js//此时只是放到了暂存区
      git commit -m '描述'//此时提交到版本库,进行管理master
    查看版本库当前状态
    
      git status
      git diff //查看未添加的修改

    ​​​​​​​

  • 版本日志

      git log 会显示版本日志,时间倒序
      commit e2c269d46087a337f3f333bedccb6211db8a12ae//版本号----
      Author: cy <2279679717@qq.com>
      Date:   Sun Dec 30 14:25:26 2018 +0800
      git relog看卡你的日志,包括回退等
  • 版本回退

      git reset --hard HEAD^回退一个版本
      git reset --hard HEAD^^回退两个个版本....依次类推几个^回退几个版本
      ​
      //版本前进
      git reset --hard e2c269d46087a337//部分版本号即可
  • 删除文件

      rm 文件名
      git rm
      git commit -m '删除'
  • 分支管理

    • 创建分支

         git checkout -b cy//创建并进入分支
    • 查看分支

        git branch
    • 切换分支

        git checkout master
    • 合并分支

        首先合并分支,比如,你想用master合(吞)并掉cy分支
        git checkout master 来到master下
        git merge cy
    • 删除分支

        git branch -d cy
        -D
    • 解决冲突

        解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
  • 远程仓库

      ssh-keygen -t rsa -C "youremail@example.com"//已经生成pub秘钥
      1--GitHub上
      echo "# -" >> README.md
      git init
      git add README.md
      git commit -m "first commit"
      git remote add origin https://github.com/cy2zq/-.git
      git push -u origin master
    • git上传忽略node_modules

        输入 touch .gitignore ,生成“.gitignore”文件。
        在”.gitignore” 文件里输入你要忽略的文件夹及其文件
        .DS_Store
        node_modules/
        dist/
        npm-debug.log
  • 构建工具

      自动化,对于需要反复重复执行的任务,可以使用自动化完成,例如:压缩、代码检查、测试等等...
  • 安装全局gulp

      cnpm install --global gulp
  • 安装项目依赖

      cnpm install --save-dev gulp
  • 在项目根目录下创建一个名为 gulpfile.js 的文件

        var gulp = require('gulp');
        gulp.task('default', function() {
          // 压缩,合并...
          console.log("hello gulp");
        })
  • gulp常用方法:

       gulp.task(str,fn)
          创建一个gulp任务
        gulp.src(path)
          文件来源
        gulp.dest(path)
          操作之后的文件到哪里去
        .pipe(package)
          执行一个gulp功能
        gulp.watch()
          监听
        gulp.start()
          执行gulp任务
  • gulp:插件作用(以下插件都是项目依赖)

    • 压缩js第三方插件

        cnpm install --save-dev gulp-uglify
    • 压缩CSS文件

        cnpm install --save-dev gulp-minify-css
    • 压缩HTML文件

        cnpm install --save-dev gulp-minify-html
    • 压缩图片文件

        cnpm install --save-dev gulp-imagemin
              https://github.com/sindresorhus/gulp-imagemin
              ffmpeg
    • 代码检查

        cnpm install --save-dev gulp-jshint jshint
        注意:很多公司是有自己learder修改的编码方式
        // bad  good
    • 合并、重命名

        cnpm install --save-dev gulp-concat gulp-rename
    • 集中式版本管理系统:SVN

        也叫版本控制器或版本迭代器,换句话说就是存储和管理我们的代码的地方
        版本库存在中央服务器:一台服务器
        当我们使用时,需要从中央服务器更新代码
        可以使用内网(局域网),和外网(互联网)
        缺点:但必须依赖网络;一旦中央服务器出现问题,将无法继续进行工作
    • 安装--安装visualSVN:这是中央服务器

      • 端口:443--80;8443--8080

      • 创建新的资源库

      • 创建用户

      • 右击新建的资源库copy资源库的地址

      • 上传:导入:但为关联--单向数据流

      • 检出:双向关联:会有.svn文件

      • 图标

        • 绿色对号:成功

        • 黄色感叹号:冲突

        • 红色感叹号:与服务器不一致

    • 安装客户端

      • 不用SVN时,记得要关闭,否则端口会被占用(正方形)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值