纯webpack打包项目
webpack 3 零基础入门教程
http://webpackbook.rails365.net/466996(文本)
https://www.rails365.net/movies/webpack-3-ling-ji-chu-ru-men-shi-pin-jiao-cheng-1-jie-shao (视频)
项目文件夹:
根目录:
src下的目录:
dist下打包后生成的目录:
下面是详细的流程步骤:
1、建立项目名
mkdir 项目名
2、定位项目名里面
cd 项目名
3、生成package.json文件
npm init --yes
4、安装webpack( 不加版本号默认为2.0以上 )
cnpm install webpack --save-dev
5、生成依赖包,即node_modules目录 ( 生成一小部分,后面需安装各种包,不像vue-cli本身就集成很多 )
cnpm install
6、建立src和dist文件夹,src目录下建styles和scripts( 可省略此步,手动新建 )
mkdir src mkdir dist ……
7、根目录下建立index.html,并暂时引入出口文件bundle.js( 前期预览效果,后面会自动引入 )
8、根目录建立webpack.config.js,先定义进出口文件对应的目录及随便写entry文件的内容
module.exports = {
entry: {
main: './src/scripts/main.js',
aaa: './src/scripts/aaa.js',
bbb: './src/scripts/bbb.js',
ccc: './src/scripts/ccc.js'
},
output: {
path: path.resolve(__dirname,'./dist'),
filename: 'js/[name]-bundle.js'
}
9、初次执行打包命令,可看到dist下生成打包后的js文件
直接在命令行输入 'webpack' ( 后面每一步操作都要webpack一下才可看到效果 )
'webpack --display-error-details' : 出错时错误的详情
'webpack -w' : 提供watch方法,实时进行打包更新( 推荐加上-w )
'webpack -p' : 对打包后的文件进行压缩
'webpack -d' : 提供SourceMaps,方便调试
10、生成页面中的html,安装html-webpack-plugin插件并配置好
cnpm install html-webpack-plugin --save-dev
module.exports = {
plugins: [
//根目录的index.html生成dist下的html,多new几个就可多个页面生成
new htmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: 'body', //script标签的放置
title: 'index title test',
minify: { //html压缩
removeComments: true, //移除注释
collapseWhitespace: true //移除空格
}
//chunks: ['main','aaa'], //生成html页面后的script文件的引入
//排除没有用到的script文件,其他的都引进来,比chunks更好匹配
excludeChunks: ['bbb','ccc'] //引入了main.js和aaa.js
})
}
11、接下来安装各种loader及配置:
js的loader安装:
cnpm install babel-preset-latest --save-dev
cnpm install babel loader babel-core babel-plugin-transform-runtime babel-preset-es2015 babel-runtime --save-dev
css的loader安装:
cnpm install style-loader css-loader --save-dev
//css3前缀补全:
cnpm install postcss-loader --save-dev
cnpm install autoprefixer --save-dev
sass的loader安装:
cnpm install sass-loader node-sass webpack --save-dev
模板中的loader安装:
cnpm install html-loader --save-dev ( html )
cnpm install ejs-loader --save-dev ( ejs )
图片:
cnpm install file-loader --save-dev
url:
cnpm install url-loader --save-dev
图片压缩:
cnpm install image-webpack-loader --save-dev
大体配置格式:
module.exports = {
module: {
rules: [
//处理js中的loader
{
test: /\.js$/,
loader: 'babel-loader',
include: path.resolve(__dirname,'/src'),
exclude: path.resolve(__dirname,'/node_modules')
},
//处理css中的loader
{
test: /\.css$/,
loader: 'style-loader!css-loader?importLoaders=1!postcss-loader'
},
//处理sass中的loader
{
test: /\.scss$/,
loader: 'style-loader!css-loader!postcss-loader!sass-loader'
},
//处理html模板中的loader
{
test: /\.html$/,
loader: 'html-loader'
},
//处理ejs模板中的loader,以.tpl后缀结尾的
{
test: /\.tpl$/,
loader: 'ejs-loader'
},
//处理图片中的loader( 通常url/file/image-webpack等loader配合 )
{
test: /\.(png|jpg|gif|svg)$/i,
loader: 'file-loader'
}
]
}
}
css3前缀要放在插件里,与webpack1的用法不同
module.exports = {
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
postcss: [
require("autoprefixer")({
browsers: ["last 5 versions"]
})
]
}
})
]
}
最终的webpack.config.js配置如下:
var webpack = require("webpack");
var path = require("path");
var htmlWebpackPlugin = require("html-webpack-plugin"); module.exports = {
entry: './src/app.js', /*{
main: './src/scripts/main.js',
aaa: './src/scripts/aaa.js',
bbb: './src/scripts/bbb.js',
ccc: './src/scripts/ccc.js'
}*/
output: {
path: path.resolve(__dirname,'./dist'),
filename: 'js/[name]-bundle.js',
publicPath: 'http://cdn.com/' //上线的绝对路径
},
//插件
plugins: [
new htmlWebpackPlugin({ //根目录的index.html生成dist下的html,可以多个生成
filename: 'index.html',
template: 'index.html',
inject: 'body', //script标签的放置
//title: 'index title test',
minify: { //html压缩
removeComments: true, //移除注释
collapseWhitespace: true //移除空格
}
//chunks: ['main','aaa'], //生成html页面后的script文件的引入
//excludeChunks: ['bbb','ccc'] //排除没有用到的script文件,其他的都引进来,比chunks更好匹配
}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: [ //浏览器自动补全前缀
require("autoprefixer")({
browsers: ["last 5 versions"]
})
]
}
})
/*,
new htmlWebpackPlugin({
filename: 'b.html',
template: 'index.html',
inject: 'body',
title: "this is b.html",
//chunks: ['bbb'],
//excludeChunks: ['aaa','ccc']
}),
new htmlWebpackPlugin({
filename: 'c.html',
template: 'index.html',
inject: 'body',
title: "this is c.html",
//chunks: ['ccc'],
//excludeChunks: ['aaa','bbb']
})*/
],
module:{
rules: [ //1.0的是loaders
//处理js中的loader
{
test: /\.js$/,
loader: 'babel-loader',
include: path.resolve(__dirname,'/src'), //指定打包的文件
exclude: path.resolve(__dirname,'/node_modules') //排除打包的文件,加速打包时间
},
//处理css中的loader
{
test: /\.css$/,
loader: 'style-loader!css-loader?importLoaders=1!postcss-loader' //@import进来的样式在问号后加
},
//处理sass中的loader
{
test: /\.scss$/,
loader: 'style-loader!css-loader!postcss-loader!sass-loader'
},
//处理html模板中的loader
{
test: /\.html$/,
loader: 'html-loader'
},
//处理ejs模板中的loader,以.tpl后缀结尾的
{
test: /\.tpl$/,
loader: 'ejs-loader'
},
//处理图片中的loader,file-loader,url-loader,image-webpack-loader相互配合(图片格式转换base64 图片压缩)
{
test: /\.(png|jpg|gif|svg)$/i, //模板中的图片放相对路径: src="${require('../imgs/aaa.jpg')}"
loader: 'url-loader'
}
]
} }
配置后的东西可以在这里看到package.json( 也可在这里设置其他 ):
{
"name": "webpack-demo",
"version": "2.0.0",
"description": "wabpack demo",
"main": "index.js",
"babel": {
"presets": [
"latest"
]
},
"scripts": {
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot --port 8081",
"build": "cross-env NODE_ENV=production webpack --progress --colors --display modules --display reason --hide-modules"
},
"keywords": [
"wabpcck"
],
"author": "wu",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^6.7.7",
"babel": "^6.23.0",
"babel-core": "^6.24.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.0",
"babel-preset-latest": "^6.24.0",
"babel-runtime": "^6.23.0",
"css-loader": "^0.28.0",
"ejs-loader": "^0.3.0",
"file-loader": "^0.11.1",
"html-loader": "^0.4.5",
"html-webpack-plugin": "^2.28.0",
"image-webpack-loader": "^3.3.0",
"imagemin-pngquant": "^5.0.0",
"install": "^0.8.8",
"loader": "^2.1.1",
"node-sass": "^4.5.2",
"postcss-loader": "^1.3.3",
"sass-loader": "^6.0.3",
"style-loader": "^0.16.1",
"url-loader": "^0.5.8",
"webpack": "^2.3.3"
}
}
作者:晨光2016
链接:https://www.jianshu.com/p/87a9ba0a5c73
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
纯webpack打包项目的更多相关文章
- 如何使用webpack打包项目
webpack是前端开发中比较常用的打包工具之一,另外还有gulp,grunt.之前没有涉及过打包这块,这里介绍一下使用webpack打包的流程. Grunt和Gulp的工作方式是:在一个配置文件中, ...
- 【vue】饿了么项目-使用webpack打包项目
1.vue cli给我们提供了npm run build命令打包项目,在packa.json文件中scripts对象中有build属性,当我们执行npm run build时,就执行build对应的& ...
- vue和webpack打包 项目相对路径修改
一般vue使用webpack打包是整个工程的根目录,但是很多情况下都是把vue打包后的文件在某子目录下. 修改: 1,打开index.js assetsPublicPath:'/' 改为: asset ...
- 实践2:github管理代码仓库,包含用webpack打包项目
此篇介绍用github仓库管理代码,github是大型的项目代码管理,存储平台:简单说帮助一个团队共享,修改同一个项目,配合着gitHub Desktop非常方便: 可以做到多人删除.修改.增加同一项 ...
- 0基础手把手教你搭建webpack运行打包项目(未完待续)
这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...
- 如何使用webpack打包你的项目
webpack是前端开发中比较常用的打包工具之一,另外还有gulp,grunt.之前没有涉及过打包这块,这里介绍一下使用webpack打包的流程. Grunt和Gulp的工作方式是:在一个配置文件中, ...
- 零基础学习webpack打包管理
这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...
- webpack打包生成多个vendor的配置方法
用webpack打包项目的时候,一般喜欢把一些公用的库打包的vendor.js里面,比如像react,react-router,redux等. 随着引入的库越来越多,vendor文件也变得越来越大,于 ...
- 基于ES6模块标准通过webpack打包HTM5项目
本篇主要演示通过webpack打包phaser项目,webpack安装方法在此处就不一一赘述了 经常用phaser来写html5游戏的朋友可能会发现,当游戏场景比较多时,如果都写在一个js文件中那么将 ...
随机推荐
- Groovy 设计模式 -- 借贷
借贷模式 http://groovy-lang.org/design-patterns.html#_loan_my_resource_pattern The Loan my Resource patt ...
- HTTP访问控制(CORS)
当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 比如,站点 http://domain-a.com 的某 HTML 页面通过 <img ...
- python 之模块random
随机形成字母和数字组成的五位字符码. [root@localhost python]# vim timee.py import random def coder(): code = '' for i ...
- MLE
独立同分布的采样x1,x2,…,xn,θ为模型参数,f为我们所使用的模型.参数为θ的模型f产生上述采样可表示为 f(x1,x2,…,xn|θ)=πf(xi|θ) 已知的为x1,x2,…,xn,未知为θ ...
- linux上安装Docker(非常简单的安装方法)
Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 可以将其启动.开始.停止.删除.而这些容器都是 ...
- Linux C++ TCP Socket传输文件或图片实例
环境:Linux 语言:C++ 通信方式:TCP 下面用TCP协议编写一个简单的服务器.客户端,其中服务器端一直监听本机的6666号端口.如果收到连接请求,将接收请求并接收客户端发来的消息:客户端与服 ...
- Windows Server 2008 R2忘记密码导致无法修改密码
其实有个记住密码的工具还是简单的,登陆系统后,CMD输入命令: net user administrator NewPassword 新密码即时生效
- 工程师死绝的世界答案-python3版
エンジニアが死滅シタ世界|アンドロイドとふたりぼっちで生きろ. 荒れ果てた警察署 [MISSION LEVEL: D] 难度D 题目要求: あなたは 0 から 9 の数字を 3 つ入力すると開く扉を開 ...
- 使用new data计算时间以及格式转换
1.时间计算,往后加30(默认一个月的时间),sxTime表示的是在当前时间往后加几天的之后一个月 function maxDate1(){ var nowDate = new Date(); max ...
- requests库入门03-get请求
先看一个没有请求参数的get请求,访问百度首页 import requests r = requests.get('https://www.baidu.com') print(r.status_cod ...