searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

webpack手动搭建无框架项目

2023-08-10 08:33:25
7
0

安装各类依赖

webpack-dev-server

npm install webpack-dev-server --save-dev

使用webpack-dev-server启动服务,检测本地修改,实现热更新。

cross-env

npm install cross-env --save-dev

使用cross-env定义环境变量如NODE_ENV等,用作程序种环境的判断启用不同的逻辑

webpack-merge

npm install webpack-merge --save-dev

使用webpack-merge的merge方法可以合并多个webpackconfig文件,分类管理config,便于开发者理解和拆分功能

babel

babel必须要引入三个包:

@babel/core:babel核心库,供babel-loader调用

@babel/preset-env:包含所有es6转化为es5的规则

@babel/polyfill:兼容低版本浏览器,转换promise对象和一些新的原生方法,需要在preset选项中使用"useBuiltIns": "usage"配置只转换使用到的语法打包到成果物中

//在webpackconfig中entry之前引入
{
	entry: ['@babel/polyfill', 'index.js']
}

 babel-loader:代码转换loader

.babelrc配置: babel loader运行前会阅读该文件判断该如何转换代码

{
	"presets": [
  	[
    	"@babel/preset-env", 
      {
      	"chrome": "58",
        "ie": "11",
        "edge": "16",
        "firefox": "66",
        "safari": "11"
      },
      {
        "useBuiltIns": "usage"
      }
    ]
  ],
  "plugins": []
}

可选:transform-runtime:不在全局挂载浏览器不兼容的功能,适合写库

clean-webpack-plugin

删除之前打包的版本,避免路径冲突

npm install --save-dev clean-webpack-plugin

copy-webpack-plugin

npm install --save-dev copy-webpack-plugin

拷贝文件到指定文件夹,打包后文件可以放在单独的打包收集文件夹中,避免与项目代码混合,方便管理

node-sass

npm install --save-dev node-sass

使用提供scss语法,可以程序化结构化编写css代码

sass-loader

npm install --save-dev sass-loader

配置sass的loader,编译sass文件为css文件

glob

npm install --save-dev glob

简化多页面应用入口配置,可以直接使用glob方法直接生成entry

mini-css-extract-plugin

npm install mini-css-extract-plugin -D

将所有的css是,scss抽取到一个文件中,可以结合webpack的splitChunks中按entry提取entryStyles

optimize-css-assets-webpack-plugin

npm install optimize-css-assets-webpack-plugin --save-dev

压缩css代码

popper.js

npm i @popperjs/core --save

popper定位,便于写Hover框

purify-css

npm i -D purify-css

自动检查没有使用的css并删除,可以配置某些link的css不精简,添加自定义属性

purifycss-webpack

npm i -D purifycss-webpack

提供使用purify-css的插件和treeShaking(消除无用代码)

url-loader

npm install --save-dev url-loader

文件大小低于指定的限制时,可以将图片文件转换为base64文件

style-loader

npm install --save-dev style-loader

将js文件中引入的css文件通过style标签注入到html文件中

css-loader

npm install --save-dev css-loader

解析各css文件的依赖关系

husky

npm install husky --save-dev

git的生命周期工具,安装之后,自动在.git目录下增加相应的钩子,可以监听到git的各个生命周期,并配置对应的shell命令

配置eslint在commit之前自动检查一下代码

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "eslint src/**/*{.js,.vue}"
    }
  }
}

lint-staged

只配置husky会导致不commit的文件不符合eslint时也会在提交时报错,这是需要这个包来配置只校验我们需要commit的文件

npm install lint-staged --save-dev
// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,vue}": [
      "eslint"
    ]
  }
}

patch-package

npm install patch-package --save-dev

可以修改包文件,自主解决发布库中的性能样式等问题

npx patch-package zrender

 package中配置

"devDependencies": {
    "@babel/core": "^7.14.6",
    "@babel/polyfill": "^7.12.1",
    "@babel/preset-env": "^7.14.7",
    "babel-loader": "^8.2.2",
    "cross-env": "^7.0.3",
    "css-loader": "^5.2.6",
    "purify-css": "^1.2.5",
    "purifycss-webpack": "^0.7.0",
    "style-loader": "^3.0.0",
    "url-loader": "^4.1.1",
    "webpack-dev-server": "^3.11.2",
    "webpack-merge": "^5.8.0"
  },
  "dependencies": {
    "@popperjs/core": "^2.9.2",
    "node-sass": "^6.0.1",
    "sass-loader": "^12.1.0"
  }
0条评论
0 / 1000
s****n
2文章数
0粉丝数
s****n
2 文章 | 0 粉丝
s****n
2文章数
0粉丝数
s****n
2 文章 | 0 粉丝
原创

webpack手动搭建无框架项目

2023-08-10 08:33:25
7
0

安装各类依赖

webpack-dev-server

npm install webpack-dev-server --save-dev

使用webpack-dev-server启动服务,检测本地修改,实现热更新。

cross-env

npm install cross-env --save-dev

使用cross-env定义环境变量如NODE_ENV等,用作程序种环境的判断启用不同的逻辑

webpack-merge

npm install webpack-merge --save-dev

使用webpack-merge的merge方法可以合并多个webpackconfig文件,分类管理config,便于开发者理解和拆分功能

babel

babel必须要引入三个包:

@babel/core:babel核心库,供babel-loader调用

@babel/preset-env:包含所有es6转化为es5的规则

@babel/polyfill:兼容低版本浏览器,转换promise对象和一些新的原生方法,需要在preset选项中使用"useBuiltIns": "usage"配置只转换使用到的语法打包到成果物中

//在webpackconfig中entry之前引入
{
	entry: ['@babel/polyfill', 'index.js']
}

 babel-loader:代码转换loader

.babelrc配置: babel loader运行前会阅读该文件判断该如何转换代码

{
	"presets": [
  	[
    	"@babel/preset-env", 
      {
      	"chrome": "58",
        "ie": "11",
        "edge": "16",
        "firefox": "66",
        "safari": "11"
      },
      {
        "useBuiltIns": "usage"
      }
    ]
  ],
  "plugins": []
}

可选:transform-runtime:不在全局挂载浏览器不兼容的功能,适合写库

clean-webpack-plugin

删除之前打包的版本,避免路径冲突

npm install --save-dev clean-webpack-plugin

copy-webpack-plugin

npm install --save-dev copy-webpack-plugin

拷贝文件到指定文件夹,打包后文件可以放在单独的打包收集文件夹中,避免与项目代码混合,方便管理

node-sass

npm install --save-dev node-sass

使用提供scss语法,可以程序化结构化编写css代码

sass-loader

npm install --save-dev sass-loader

配置sass的loader,编译sass文件为css文件

glob

npm install --save-dev glob

简化多页面应用入口配置,可以直接使用glob方法直接生成entry

mini-css-extract-plugin

npm install mini-css-extract-plugin -D

将所有的css是,scss抽取到一个文件中,可以结合webpack的splitChunks中按entry提取entryStyles

optimize-css-assets-webpack-plugin

npm install optimize-css-assets-webpack-plugin --save-dev

压缩css代码

popper.js

npm i @popperjs/core --save

popper定位,便于写Hover框

purify-css

npm i -D purify-css

自动检查没有使用的css并删除,可以配置某些link的css不精简,添加自定义属性

purifycss-webpack

npm i -D purifycss-webpack

提供使用purify-css的插件和treeShaking(消除无用代码)

url-loader

npm install --save-dev url-loader

文件大小低于指定的限制时,可以将图片文件转换为base64文件

style-loader

npm install --save-dev style-loader

将js文件中引入的css文件通过style标签注入到html文件中

css-loader

npm install --save-dev css-loader

解析各css文件的依赖关系

husky

npm install husky --save-dev

git的生命周期工具,安装之后,自动在.git目录下增加相应的钩子,可以监听到git的各个生命周期,并配置对应的shell命令

配置eslint在commit之前自动检查一下代码

// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "eslint src/**/*{.js,.vue}"
    }
  }
}

lint-staged

只配置husky会导致不commit的文件不符合eslint时也会在提交时报错,这是需要这个包来配置只校验我们需要commit的文件

npm install lint-staged --save-dev
// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.{js,vue}": [
      "eslint"
    ]
  }
}

patch-package

npm install patch-package --save-dev

可以修改包文件,自主解决发布库中的性能样式等问题

npx patch-package zrender

 package中配置

"devDependencies": {
    "@babel/core": "^7.14.6",
    "@babel/polyfill": "^7.12.1",
    "@babel/preset-env": "^7.14.7",
    "babel-loader": "^8.2.2",
    "cross-env": "^7.0.3",
    "css-loader": "^5.2.6",
    "purify-css": "^1.2.5",
    "purifycss-webpack": "^0.7.0",
    "style-loader": "^3.0.0",
    "url-loader": "^4.1.1",
    "webpack-dev-server": "^3.11.2",
    "webpack-merge": "^5.8.0"
  },
  "dependencies": {
    "@popperjs/core": "^2.9.2",
    "node-sass": "^6.0.1",
    "sass-loader": "^12.1.0"
  }
文章来自个人专栏
前端总结
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0