关于自己配置有关webpack.config.js和vue项目搭建相关步骤

  2 
  3 ## Webpack的配置和使用
  4 ### 安装
  5 1. 全局安装
  6 ```
  7 npm install webpack -g
  8 ```
  9 2. 本地安装
 10 ```
 11 npm install webpack -D
 12 ```
 13 ### 使用
 14 #### 直接通过命令参数来执行
 15 1. 如果是全局安装的
 16 ```
 17 webpack 入口文件 出口文件
 18 ```
 19 2. 如果是本地安装的
 20     2.1 先在package.json的script标签中添加一条命令(就和全局的命令一模一样)
 21     2.2 通过npm run 命令名 来执行命令
 22 
 23 #### 通过配置文件来执行
 24 如果是使用的配置文件,那么在使用webpack的命令的时候,就不需要再传递参数了!
 25 
 26 配置文件名为 webpack.config.js, 这个文件一般被放在网站的根目录下
 27 
 28 webpack.config.js是一个node.js的模块,所以里面的代码,就是nodejs代码,需要通过nodejs模块化的方式,将配置对象进行导出!
 29 
 30 基础配置项
 31 ```js
 32 var path = require("path")
 33 
 34 module.exports = {
 35     entry: path.join(__dirname, "入口文件路径"),
 36     output: {
 37         path: path.join(__dirname, "dist"),
 38         filename: "bundel.js"
 39     }
 40 }
 41 
 42 ```
 43 
 44 ### 使用webpack打包别的类型的文件
 45 webpack默认支持的文件类型,只有js文件,如果在项目中出现了其他类型的文件,那么webpack本身是无法进行处理的,所以我们需要为每一个类型的文件,单独指定一个加载器(loader)
 46 
 47 #### css
 48 在webpack的项目中,如果要使用css文件,我们可以将css文件当做一个模块,使用import的方式引入到js当中,最终webpack会将css文件中的内容,一起打包到最终的js文件中,也可以在页面中生效
 49 
 50 要打包css文件,就需要给css文件配置loader,需要两个loader: style-loader css-loader
 51 
 52 1. 安装相应的loader
 53 ```
 54 npm install style-loader css-loader -D
 55 ```
 56 2. 在webpack.config.js中配置css文件对应的loader
 57 ```js
 58 var path = require("path")
 59 
 60 module.exports = {
 61     entry: path.join(__dirname, "入口文件路径"),
 62     output: {
 63         path: path.join(__dirname, "dist"),
 64         filename: "bundel.js"
 65     },
 66     //module属性中就可以进行loader的配置
 67     module: {
 68         rules: [
 69             {
 70                 test: /\.css$/,
 71                 //use中放的就是加载器的名称,要注意,调用的顺序是从后向前的
 72                 use: ["style-loader", "css-loader"]
 73             }
 74         ]
 75     }
 76 }
 77 ```
 78 
 79 #### less sass
 80 less需要的loader:  style-loader css-loader less-loader        依赖项: less
 81 sass需要的loader:  style-loader css-loader sass-loader        依赖项: node-sass
 82 
 83 1. 安装相应的loader
 84 
 85     1.1 less-loader:
 86     ```
 87         npm install less-loader less -D
 88     ```
 89     1.2 sass-loader
 90     ```
 91         npm install sass-loader node-sass -D
 92     ```
 93 2. 配置加载器
 94 ```js
 95 var path = require("path")
 96 
 97 module.exports = {
 98     entry: path.join(__dirname, "入口文件路径"),
 99     output: {
100         path: path.join(__dirname, "dist"),
101         filename: "bundel.js"
102     },
103     //module属性中就可以进行loader的配置
104     module: {
105         rules: [
106             {
107                 test: /\.css$/,
108                 //use中放的就是加载器的名称,要注意,调用的顺序是从后向前的
109                 use: ["style-loader", "css-loader"]
110             },
111             {
112                 //less文件
113                 test: /\.less$/,
114                 use: ["style-loader", "css-loader", "less-loader"]
115             },
116             {
117                 //sass文件
118                 test:  /\.sass$/,
119                 use: ["style-loader", "css-loader", "sass-loader"]
120             }
121         ]
122     }
123 }
124 ```
125 
126 #### 图片 字体 打包
127 图片需要的loader: url-loader    依赖项: file-loader
128 字体需要的loader: url-loader
129 
130 1. 安装
131 ```
132 npm install url-loader file-loader -D
133 ```
134 2. 配置
135 ```js
136 var path = require("path")
137 
138 module.exports = {
139     entry: path.join(__dirname, "入口文件路径"),
140     output: {
141         path: path.join(__dirname, "dist"),
142         filename: "bundel.js"
143     },
144     //module属性中就可以进行loader的配置
145     module: {
146         rules: [
147             {
148                 test: /\.css$/,
149                 //use中放的就是加载器的名称,要注意,调用的顺序是从后向前的
150                 use: ["style-loader", "css-loader"]
151             },
152             {
153                 //less文件
154                 test: /\.less$/,
155                 use: ["style-loader", "css-loader", "less-loader"]
156             },
157             {
158                 //sass文件
159                 test:  /\.sass$/,
160                 use: ["style-loader", "css-loader", "sass-loader"]
161             },
162             {
163                 //图片文件
164                 test:  /\.(jpg|gif|png|jpeg|svg|bmp)$/,
165                 use: [{
166                     loader: "url-loader",
167                     options: {
168                         //如果图片超过下面这个数据所标注的大小,那么图片将不会被转换成base64的格式,直接会将图片文件扔到dist目录里
169                         limit: 1024 * 50
170                     }
171                 }]
172             },
173             {
174                 //字体文件
175                 test: /\.(woff|woff2|eot|ttf)$/,
176                 use: ["url-loader"]
177             }
178         ]
179     }
180 }
181 ```
182 
183 ### ES6 代码打包
184 用到的loader: babel-loader    依赖项: babel-core
185 用到转码规则: babel-preset-env
186 1. 安装
187 ```
188 npm install babel-loader babel-core -D
189 ```
190 2. 配置
191     2.1 创建一个.babelrc 用来指定转码的规则
192     ```js
193     {
194         presets: [
195             "env"
196         ]
197     }
198     ```
199     2.2 webpack.config.js配置加载器
200 
201     ```js
202     var path = require("path")
203 
204     module.exports = {
205         entry: path.join(__dirname, "入口文件路径"),
206         output: {
207             path: path.join(__dirname, "dist"),
208             filename: "bundel.js"
209         },
210         //module属性中就可以进行loader的配置
211         module: {
212             rules: [
213                 {
214                     test: /\.css$/,
215                     //use中放的就是加载器的名称,要注意,调用的顺序是从后向前的
216                     use: ["style-loader", "css-loader"]
217                 },
218                 {
219                     //less文件
220                     test: /\.less$/,
221                     use: ["style-loader", "css-loader", "less-loader"]
222                 },
223                 {
224                     //sass文件
225                     test:  /\.sass$/,
226                     use: ["style-loader", "css-loader", "sass-loader"]
227                 },
228                 {
229                     //图片文件
230                     test:  /\.(jpg|gif|png|jpeg|svg|bmp)$/,
231                     use: [{
232                         loader: "url-loader",
233                         options: {
234                             //如果图片超过下面这个数据所标注的大小,那么图片将不会被转换成base64的格式,直接会将图片文件扔到dist目录里
235                             limit: 1024 * 50
236                         }
237                     }]
238                 },
239                 {
240                     //字体文件
241                     test: /\.(woff|woff2|eot|ttf)$/,
242                     use: ["url-loader"]
243                 },
244                 {
245                     //ES6
246                     test: /\.js$/,
247                     //排除node_modules中的内容
248                     exclude: /node_modules/,
249                     use: ["babel-loader"]
250                 }
251             ]
252         }
253     }
254     ```
255 ### html-webpack-plugin的使用
256 作用: 将src目录下的index.html作为模板,每次在打包的时候,都会将其复制到dist目录下,并且自动为其引入bundle.js
257 
258 1. 安装
259 ```
260 npm install html-webpack-plugin -D
261 ```
262 2. 配置webpack.config.js
263 ```js
264 var HtmlWebpackPlugin = require("html-webpack-plugin")
265 var path = require("path")
266 
267 module.exports = {
268     entry: path.join(__dirname, "入口文件路径"),
269     output: {
270         path: path.join(__dirname, "dist"),
271         filename: "bundel.js"
272     },
273     plugins:[
274         new HtmlWebpackPlugin({
275             template: path.join(__dirname, "src/index.html")
276         })
277     ]
278 }
279 
280 ```
281 
282 ## webpack-dev-server的使用
283 如果没有这个东西,那么每次在修改代码之后,都需要重新进行打包,才能看到效果!
284 
285 webpack-dev-server可以启动一个简易的http服务器,当代码发生改变的时候,实时的进行打包并且刷新页面显示效果! 这个东西只会打包更新了的内容,并不会将整个项目完整的打包,所以效率会比较高,而且它打包的内容都是直接放在内存里面的,所以访问速率也会非常快
286 
287 1. 安装
288 ```
289 npm install webpack-dev-server -D
290 ```
291 
292 2. 使用
293 
294     2.1 直接给命令传参
295     ```
296     webpack-dev-server --port 9000 --contentBase ./src --hot
297     ```
298     2.2 在webpack.config.js中进行配置
299     ```js
300     var path = require("path");
301     
302     //如果使用webpack.config方式进行配置,那么必须有这个包引入
303     var webpack = reuqire("webpack");
304 
305     module.exports = {
306         entry: path.join(__dirname, "入口文件路径"),
307         output: {
308             path: path.join(__dirname, "dist"),
309             filename: "bundel.js"
310         },
311         devServer: {
312             port: 9999,
313             contentBase: "./src",
314             hot: true
315         },
316         plugins:[
317             //这边是给dev-server设置一个插件,如果没有这个插件则热更新会报错
318             new webpack.HotModuleReplacementPlugin()
319         ]
320     }
321 
322     ```
323 
324 ## babel-cli的使用
325 1. 安装
326 ```
327 npm install babel-cli -g
328 npm install babel-preset-env
329 ```
330 2. 配置
331 创建.babelrc文件
332 ```
333 {
334     presets: [
335         "env"
336     ]
337 }
338 ```
339 3. 使用
340 ```
341 babel 要转换的文件的路径 --out-file 输出的文件的路径
342 ```
343 
344 ## 单文件组件
345 就是将组件相关的内容(HTML JS CSS)全部放到了一个.vue文件当中
346 
347 ```html
348 <template>
349     <div>
350         //这里就是组件的html部分也就是所谓的模板
351     </div>
352 </template>
353 
354 <script>
355     export default {
356         data(){},
357         filters: {},
358         components: {},
359         watch: {},
360         directives: {},
361         created(){}
362     }
363 </script>
364 
365 scoped属性标志着这个style标签中的css样式是只对当前组件有效!
366 <style scoped>
367 </style>
368 ```
369 
370 ## Vue-Cli
371 这是一个可以快速生成一个项目基本结构的vue工具
372 
373 1. 安装
374 ```
375 npm install vue-cli -g
376 ```
377 2. 使用
378 ```
379 vue init webpack 项目名称
380 ```
381 
382 ## 在项目模板中写代码
383 1. 创建组件!
384 2. 配置路由!
385 
386 项目模板的获取两种方式:
387 1. 自己写的模板
388     https://github.com/avakpan/vue-template
389     
390 2. vue-cli生成模板

     在使用vue框架的时候对应的webpack.config.js的配置,利用babel转换ES6为ES5的相关配置,以及下载vue项目基本结构的地址,通过vue-cli搭建vue项目基本结构.

posted @ 2017-11-30 18:25  哈哈你说对不对  阅读(7951)  评论(0编辑  收藏  举报