webpack打包多页面

1.创建json,npm int

2.引入的依赖用cnpm install xx --save-dev或者npm install xx --save-dev

3.用到的loader和plugin有

"clean-webpack-plugin": "^3.0.0",//清理上次打包的文件

"css-loader": "^2.1.1",//对js里引入css,导出到js里

"extract-text-webpack-plugin": "^4.0.0-beta.0",//分离css从js里

"file-loader": "^3.0.1",//生成的图片的文件名就是文件内容的 MD5 哈希值并会保留所引用资源的原始扩展名。

"html-webpack-plugin": "^3.2.0",//生产html模板

"html-withimg-loader": "^0.1.16",//打包html里的,没被依赖的图片

"optimize-css-assets-webpack-plugin": "^5.0.0",//压缩css

"style-loader": "^0.23.1",//对js里引入css,导出到js里

"uglifyjs-webpack-plugin": "^2.2.0",//压缩js

"url-loader": "^1.1.2",//压缩图片文件指定大小的图片道js里

"webpack": "^4.30.0",//webpack

"webpack-dev-server": "^3.10.3"//本地服务器

4.入口(多入口)(待优化)

entry: {

index1: ‘./src/js/index1.js‘,

index2: ‘./src/js/index2.js‘,

},

优化:引入配置文件

entry: configReq.entry,

5.出口(指定在dist里,hash避免缓存)

output: {

filename: ‘js/[name]-[hash].js‘,

path: __dirname + ‘/dist‘,

},

6.本地服务器

devServer: {

contentBase: "./dist", //本地服务器所加载的页面所在的目录

port: "8080", //设置默认监听端口,如果省略,默认为"8080"

inline: true, //实时刷新

historyApiFallback: true //不跳转

},

7.loader

module: {

rules: [

//对js里引入css,导出到js里

{

test: /\.(css)$/,

use: extractTextPlugin.extract({

fallback: "style-loader",

use: [{

loader: "css-loader",

}, ]

})

},

//压缩图片

{

test: /\.(png|jpg|gif|jpeg)/, //是匹配图片文件后缀名

use: [{

loader: ‘url-loader‘, //指定使用的loader和loader的配置参数

options: {

limit: 5 * 1024, //是把小于5KB的文件打成Base64的格式,写入JS

outputPath: ‘./image/‘ //打包后的图片放到img文件夹下

}

}]

},

//打包html的图片

{

test: /\.(htm|html)$/i,

use: [‘html-withimg-loader‘]

}

]

},

8.plugins

plugins: [

new webpack.BannerPlugin(‘版权所有,翻版必究‘),

new CleanWebpackPlugin(),//清理上次打包的文件

  //html模板(待优化)

//    new htmlPlugin({

//     filename: ‘index.html‘,

//      minify: { //对html文件进行压缩

//         removeAttributeQuotes: true, //removeAttrubuteQuotes是去掉属性的双引号。

//    },

//     chunks: [‘index1‘], //每个html只引入对应的js和css

//     inject: true,

//    template: ‘./src/index1.html‘ //打包html模版的路径和文件名称。

//  }),

//   new htmlPlugin({

//       filename: ‘index2.html‘,

//       minify: { //对html文件进行压缩

//         removeAttributeQuotes: true, //removeAttrubuteQuotes是去掉属性的双引号。

//     },

//     chunks: [‘index2‘],

//     inject: true,

//        template: ‘./src/index2.html‘ //打包html模版的路径和文件名称。

//    }),

new extractTextPlugin("css/[name]-[hash].css"), //提取CSS行内样式,转化为link引入

],

optimization: {

minimizer: [

  //压缩js

new UglifyJsPlugin({

cache: true,

parallel: true,

sourceMap: true // set to true if you want JS source maps

}),

//压缩css

new OptimizeCSSAssetsPlugin({})

]

}

//html模板优化的

//生成模版文件

configReq.htmlConfig.forEach((val, i) => {

var hcoging = {

template: "./src/" + val.name + ".html", //new 一个这个插件的实例,并传入相关的参数

filename: val.name + ".html",

chunks: [val.name],

inject: true,

minify: { //压缩HTML文件

removeComments: true, //移除HTML中的注释

removeAttributeQuotes: true, //removeAttrubuteQuotes是去掉属性的双引号。

collapseWhitespace: false //删除空白符与换行符

}

}

config.plugins.push(new htmlPlugin(hcoging));

})

//配置文件config.js

const webpack = require(‘webpack‘);

//入口配置

var entry = {

index1: ‘./src/js/index1.js‘,

index2: ‘./src/js/index2.js‘,

}

//页面配置

var htmlConfig = [{

name: "index1",

src: __dirname + "/app/page/index.js",

}, {

name: "index2",

src: __dirname + "/app/page/list.js",

}];

module.exports = {

entry: entry,

htmlConfig: htmlConfig

}

//引入配置

var configReq = require(‘./config.js‘); //读取配置

module.exports = config;//config为webpack配置文件

//还剩公共的方法的处理

原文地址:https://www.cnblogs.com/ssszjh/p/12567038.html

时间: 2024-11-03 14:06:14

webpack打包多页面的相关文章

webpack打包多页面的方式

一开始接触webpack是因为使用Vue的关系,因为Vue的脚手架就是使用webpack构建的.刚开始的时候觉得webpack就是为了打包单页面而生的,后来想想,这么好的打包方案,只在单页面上使用是否太浪费资源了呢?如果能在传统多页面上使用webpack,开始效率是否会事半功倍呢?好在众多优秀的前端开发者已经写了许多demo和文章供人学习.我也写了一个小项目,希望对大家学习webpack有帮助. webpack-multi-page   项目解决的问题 SPA好复杂,我还是喜欢传统的多页应用怎么

webpack+react多页面开发(二)-终极架构

webpack4+react16多页面架构 webpack在单页面打包上应用广泛,以create-react-app为首的脚手架众多,单页面打包通常指的是将业务js,css打包到同一个html文件中,整个项目只有一个html文件入口,但也有许多业务需要多个页面不同的入口,比如不同的h5活动,或者需要支持seo的官方网站,都需要多个不同的html.webpack-react-multi-page架构让你可以在多页面在项目开发中自动化打包新创建页面并保证每个页面都可以热更新 ,build打包后有清晰

初试webpack打包

第一次接触webpack,学习了如何用webpack打包,记录一下过程. 1.在项目根目录安装webpack $ npm install webpack --save-dev 2.新建一个webpack.config.js 3.根据需要安装需要的加载器,并在webpack.config.js的module中进行配置,例如加载babel. $ npm install babel-loader --save-dev webpack.config.js文件 var webpack = require(

webpack打包avalon

webpack打包avalon+oniui+jquery 随着avalon的发展壮大,我根据CSDN的统计数字,中国前端大概有1%的人在使用avalon了. avalon的最大优势是能兼容IE6,并且其API是非常稳定,只是在1.3.7 对ms-duplex的拦截器做了一次改动(但这次改动也向下兼容),1.5中去除avalon.define的旧风格支持,废掉ms-widget指令改成更强大的自定义标签指令.相对于其他MVVM框架来说,是非常的良心.此外,配套是非常完善,尤其是oniui,也支持到

webpack打包和gulp打包工具详细教程

30分钟手把手教你学webpack实战 阅读目录 一:什么是webpack? 他有什么优点? 二:如何安装和配置 三:理解webpack加载器 四:理解less-loader加载器的使用 五:理解babel-loader加载器的含义 六:了解下webpack的几个命令 七:webpack对多个模块依赖进行打包 八:如何独立打包成样式文件 九:如何打包成多个资源文件 十:关于对图片的打包 十一:React开发神器:react-hot-loader 回到顶部 什么是webpack? 他有什么优点?

Webpack打包进阶

说在前面 由于使用了React直出,页面各项性能指标使人悦目.本篇将深入探讨目前PC部落所采用webpack打包优化策略,以及探讨PC部落并未使用的 webpack Code Splitting 代码分包.异步模块加载特性.看看它们又是如何对PC部落的性能起到进一步的催化作用. 为什么要使用webpack 如果你曾经使用过 Broserify, RequireJS 或类似的打包工具,并注重:代码分包.异步加载.静态资源打包(图片/CSS).那么 webpack 就是帮你构建项目的利器!简单一句话

node.js学习之webpack打包react最简单用法

研究一天多也没弄出来个毛,今天早上来到随便一试,嘿,结果成了.最简洁最简单的使用方法,记录下来. 首先,安装webpack命令: $ npm install webpack -g 全局安装,可以在cmd中使用webpack命令. 然后创建一个项目,项目名称webpack,我这里用的是webstorm11.创建成功之后cmd进入项目根目录,执行命令: $ npm init 这个命令会创建一个package.json的文件,是整个项目的配置文件,添加上webpack的依赖包: "devDepende

使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室

拿到一个项目,我们应该如何去完成这个项目呢. 是直接上手? 还是先进行分析,然后再去解决呢?毫无疑问,如果直接上手解决,那么可能会因为知道目标所在,而导致出现各种问题. 所以,我们应该系统的分析这个项目,然后再去完成. 第一步: 需求 除了上面的基本需求之外,我们还需要实现登录.注册的相关功能,这样可以保证用户的唯一性,并在后台做出记录. 第二步:确定技术栈 express --- 首先,作为前端使用node就可以取代后端java.php开发的工作,对于这个项目是必须的.作为node的框架,ex

Webpack打包构建太慢了?试试几个方法

Webpack是个很流行的打包工具,但其打包速度却一直被吐槽着 如果不用上一些打包的优化建议,单单打包两三个文件就能花上好几秒,放上几十个入口文件依赖几百上千个包的话,几分钟十几分钟妥妥的 本文整理了常见的一些方法,部分使用之后就看到了很大改善,部分没什么明显的变化,也可能是项目规模还不够大,先记录一下方法也好 一.使用监听模式或热更新热替换 webpack支持监听模式,此时需要重新编译时就可以进行增量构建,增量构建是很快的,基本不到一秒或几秒之内就能重新编译好 注意区分一下开发环境和线上环境,