vue-cli脚手架每行注释

  1 .babelrc文件
  2
  3 {
  4
  5   // 此项指明,转码的规则
  6
  7   "presets": [
  8
  9       // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并且设置amd,commonjs这样的模块化文件,不进行转码
 10
 11       ["env", { "modules": false }],
 12
 13       // 下面这个是不同阶段出现的es语法,包含不同的转码插件
 14
 15       "stage-2"
 16
 17   ],
 18
 19   // 下面这个选项是引用插件来处理代码的转换,transform-runtime用来处理全局函数和优化babel编译
 20
 21   "plugins": ["transform-runtime"],
 22
 23   // 下面指的是在生成的文件中,不产生注释
 24
 25   "comments": false,
 26
 27   // 下面这段是在特定的环境中所执行的转码规则,当环境变量是下面的test就会覆盖上面的设置
 28
 29   "env": {
 30
 31       // test 是提前设置的环境变量,如果没有设置BABEL_ENV则使用NODE_ENV,如果都没有设置默认就是development
 32
 33       "test": {
 34
 35           "presets": ["env", "stage-2"],
 36
 37           // instanbul是一个用来测试转码后代码的工具
 38
 39           "plugins": ["istanbul"]
 40
 41       }
 42
 43   }
 44
 45 }
 46
 47
 48
 49 vue-cli build目录中的 utils.js 配置文件
 50
 51 此配置文件是vue开发环境的wepack相关配置文件,主要用来处理css-loader和vue-style-loader
 52
 53 // 引入nodejs路径模块
 54
 55 var path = require(‘path‘)
 56
 57 // 引入config目录下的index.js配置文件
 58
 59 var config = require(‘../config‘)
 60
 61 // 引入extract-text-webpack-plugin插件,用来将css提取到单独的css文件中
 62
 63 // 详情请看(1)
 64
 65 var ExtractTextPlugin = require(‘extract-text-webpack-plugin‘)
 66
 67 // exports其实就是一个对象,用来导出方法的最终还是使用module.exports,此处导出assetsPath
 68
 69 exports.assetsPath = function (_path) {
 70
 71     // 如果是生产环境assetsSubDirectory就是‘static‘,否则还是‘static‘,
 72
 73     var assetsSubDirectory = process.env.NODE_ENV === ‘production‘
 74
 75         ? config.build.assetsSubDirectory
 76
 77         : config.dev.assetsSubDirectory
 78
 79     // path.join和path.posix.join的区别就是,前者返回的是完整的路径,后者返回的是完整路径的相对根路径
 80
 81     // 也就是说path.join的路径是C:a/a/b/xiangmu/b,那么path.posix.join就是b
 82
 83     return path.posix.join(assetsSubDirectory, _path)
 84
 85     // 所以这个方法的作用就是返回一个干净的相对根路径
 86
 87 }
 88
 89
 90
 91 // 下面是导出cssLoaders的相关配置
 92
 93 exports.cssLoaders = function (options) {
 94
 95   // options如果没值就是空对象
 96
 97   options = options || {}
 98
 99   // cssLoader的基本配置
100
101   var cssLoader = {
102
103       loader: ‘css-loader‘,
104
105       options: {
106
107           // options是用来传递参数给loader的
108
109           // minimize表示压缩,如果是生产环境就压缩css代码
110
111           minimize: process.env.NODE_ENV === ‘production‘,
112
113           // 是否开启cssmap,默认是false
114
115           sourceMap: options.sourceMap
116
117       }
118
119   }
120
121
122
123   // generate loader string to be used with extract text plugin
124
125   function generateLoaders (loader, loaderOptions) {
126
127       // 将上面的基础cssLoader配置放在一个数组里面
128
129       var loaders = [cssLoader]
130
131       // 如果该函数传递了单独的loader就加到这个loaders数组里面,这个loader可能是less,sass之类的
132
133       if (loader) {
134
135           loaders.push({
136
137               // 加载对应的loader
138
139               loader: loader + ‘-loader‘,
140
141               // Object.assign是es6的方法,主要用来合并对象的,浅拷贝
142
143               options: Object.assign({}, loaderOptions, {
144
145                   sourceMap: options.sourceMap
146
147               })
148
149           })
150
151       }
152
153
154
155       // Extract CSS when that option is specified
156
157       // (which is the case during production build)
158
159       // 注意这个extract是自定义的属性,可以定义在options里面,主要作用就是当配置为true就把文件单独提取,false表示不单独提取,这个可以在使用的时候单独配置,瞬间觉得vue作者好牛逼
160
161       if (options.extract) {
162
163           return ExtractTextPlugin.extract({
164
165               use: loaders,
166
167               fallback: ‘vue-style-loader‘
168
169           })
170
171       } else {
172
173           return [‘vue-style-loader‘].concat(loaders)
174
175       }
176
177       // 上面这段代码就是用来返回最终读取和导入loader,来处理对应类型的文件
178
179   }
180
181
182
183   // https://vue-loader.vuejs.org/en/configurations/extract-css.html
184
185   return {
186
187       css: generateLoaders(), // css对应 vue-style-loader 和 css-loader
188
189       postcss: generateLoaders(), // postcss对应 vue-style-loader 和 css-loader
190
191       less: generateLoaders(‘less‘), // less对应 vue-style-loader 和 less-loader
192
193       sass: generateLoaders(‘sass‘, { indentedSyntax: true }), // sass对应 vue-style-loader 和 sass-loader
194
195       scss: generateLoaders(‘sass‘), // scss对应 vue-style-loader 和 sass-loader
196
197       stylus: generateLoaders(‘stylus‘), // stylus对应 vue-style-loader 和 stylus-loader
198
199       styl: generateLoaders(‘stylus‘) // styl对应 vue-style-loader 和 styl-loader
200
201   }
202
203 }
204
205
206
207 // Generate loaders for standalone style files (outside of .vue)
208
209 // 下面这个主要处理import这种方式导入的文件类型的打包,上面的exports.cssLoaders是为这一步服务的
210
211 exports.styleLoaders = function (options) {
212
213   var output = []
214
215   // 下面就是生成的各种css文件的loader对象
216
217   var loaders = exports.cssLoaders(options)
218
219   for (var extension in loaders) {
220
221       // 把每一种文件的laoder都提取出来
222
223       var loader = loaders[extension]
224
225       output.push({
226
227           // 把最终的结果都push到output数组中,大事搞定
228
229           test: new RegExp(‘\\.‘ + extension + ‘$‘),
230
231           use: loader
232
233       })
234
235   }
236
237   return output
238
239 }
240
241
242
243
244 vue-cli脚手架config目录下index.js配置文件
245
246 此配置文件是用来定义开发环境和生产环境中所需要的参数
247
248 // see http://vuejs-templates.github.io/webpack for documentation.
249
250 // path是node.js的路径模块,用来处理路径统一的问题
251
252 var path = require(‘path‘)
253
254
255
256 module.exports = {
257
258   // 下面是build也就是生产编译环境下的一些配置
259
260   build: {
261
262       // 导入prod.env.js配置文件,只要用来指定当前环境,详细见(1)
263
264       env: require(‘./prod.env‘),
265
266       // 下面是相对路径的拼接,假如当前跟目录是config,那么下面配置的index属性的属性值就是dist/index.html
267
268       index: path.resolve(__dirname, ‘../dist/index.html‘),
269
270       // 下面定义的是静态资源的根目录 也就是dist目录
271
272       assetsRoot: path.resolve(__dirname, ‘../dist‘),
273
274       // 下面定义的是静态资源根目录的子目录static,也就是dist目录下面的static
275
276       assetsSubDirectory: ‘static‘,
277
278       // 下面定义的是静态资源的公开路径,也就是真正的引用路径
279
280       assetsPublicPath: ‘/‘,
281
282       // 下面定义是否生成生产环境的sourcmap,sourcmap是用来debug编译后文件的,通过映射到编译前文件来实现
283
284       productionSourceMap: true,
285
286       // Gzip off by default as many popular static hosts such as
287
288       // Surge or Netlify already gzip all static assets for you.
289
290       // Before setting to `true`, make sure to:
291
292       // npm install --save-dev compression-webpack-plugin
293
294       // 下面是是否在生产环境中压缩代码,如果要压缩必须安装compression-webpack-plugin
295
296       productionGzip: false,
297
298       // 下面定义要压缩哪些类型的文件
299
300       productionGzipExtensions: [‘js‘, ‘css‘],
301
302       // Run the build command with an extra argument to
303
304       // View the bundle analyzer report after build finishes:
305
306       // `npm run build --report`
307
308       // Set to `true` or `false` to always turn it on or off
309
310       // 下面是用来开启编译完成后的报告,可以通过设置值为true和false来开启或关闭
311
312       // 下面的process.env.npm_config_report表示定义的一个npm_config_report环境变量,可以自行设置
313
314       bundleAnalyzerReport: process.env.npm_config_report
315
316   },
317
318   dev: {
319
320       // 引入当前目录下的dev.env.js,用来指明开发环境,详见(2)
321
322       env: require(‘./dev.env‘),
323
324       // 下面是dev-server的端口号,可以自行更改
325
326       port: 8080,
327
328       // 下面表示是否自定代开浏览器
329
330       autoOpenBrowser: true,
331
332       assetsSubDirectory: ‘static‘,
333
334       assetsPublicPath: ‘/‘,
335
336       // 下面是代理表,作用是用来,建一个虚拟api服务器用来代理本机的请求,只能用于开发模式
337
338       // 详见(3)
339
340       proxyTable: {},
341
342       // CSS Sourcemaps off by default because relative paths are "buggy"
343
344       // with this option, according to the CSS-Loader README
345
346       // (https://github.com/webpack/css-loader#sourcemaps)
347
348       // In our experience, they generally work as expected,
349
350       // just be aware of this issue when enabling this option.
351
352       // 是否生成css,map文件,上面这段英文就是说使用这个cssmap可能存在问题,但是按照经验,问题不大,可以使用
353
354       // 给人觉得没必要用这个,css出了问题,直接控制台不就完事了
355
356       cssSourceMap: false
357
358   }
359
360 }
361
362 注释
363
364 (1)下面是prod.env.js的配置内容
365
366   module.exports = {
367
368       // 作用很明显,就是导出一个对象,NODE_ENV是一个环境变量,指定production环境
369
370       NODE_ENV: ‘"production"‘
371
372   }
373
374 (2)下面是dev.env.js的配置内容
375
376   // 首先引入的是webpack的merge插件,该插件是用来合并对象,也就是配置文件用的,相同的选项会被覆盖,至于这里为什么多次一举,可能另有他图吧
377
378   var merge = require(‘webpack-merge‘)
379
380   // 导入prod.env.js配置文件
381
382   var prodEnv = require(‘./prod.env‘)
383
384   // 将两个配置对象合并,最终结果是 NODE_ENV: ‘"development"‘
385
386   module.exports = merge(prodEnv, {
387
388       NODE_ENV: ‘"development"‘
389
390   })
391
392 (3)下面是proxyTable的一般用法
393
394   vue-cli使用这个功能是借助http-proxy-middleware插件,一般解决跨域请求api
395
396   proxyTable: {
397
398       ‘/list‘: {
399
400           target: ‘http://api.xxxxxxxx.com‘, -> 目标url地址
401
402           changeOrigin: true, -> 指示是否跨域
403
404           pathRewrite: {
405
406           ‘^/list‘: ‘/list‘ -> 可以使用 /list 等价于 api.xxxxxxxx.com/list
407
408           }
409
410       }
411
412   }

来源:vue-cli脚手架每行注释

原文地址:https://www.cnblogs.com/mhxy13867806343/p/8448589.html

时间: 2024-09-30 22:24:38

vue-cli脚手架每行注释的相关文章

vue.cli脚手架初次使用图文教程

vue.cli脚手架初次使用图文教程 我之前的环境是安装了node.js, 我记得曾经好像安装过vue ,不过现在又要重新开始学习起来了.在youtube上看了一vue的相关教程,还是需要实操的. 好像安装过npm -v 发现已经安装了5.6.0 需要安装然后使用 cnpm 安装 vue-cli 和 webpack 安装代码:npm install -g vue-cli 一.生成项目 首先需要在命令行中进入到项目目录,然后输入: vue init webpack vue-testone p.p1

web前端 -- vue -- vue cli脚手架

搭建 vue-cli 脚手架 1. 依赖的环境是:node.js 1.1.检测node和npm版本 node.js 官网下载页,选择 windows 系统 msi 安装版本,一路 next 安装. 要有6.9以上的node:node-v 要有3.10以上的npm:npm -v 附:安装node.js 1.2. 安装全局 vue cli Linux下使用命令:sudo npm install --global vue-cli windows下:npm install --global vue-cl

vue-cli脚手架每行注释--摘抄

.babelrc文件 { // 此项指明,转码的规则 "presets": [ // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es7,es8进行转码,并且设置amd,commonjs这样的模块化文件,不进行转码 ["env", { "modules": false }], // 下面这个是不同阶段出现的es语法,包含不同的转码插件 "stage-2" ], // 下面这个选项是

vue cli 脚手架上多页面开发 支持webpack2.x

A yuri demo for webpack2 vue multiple page.我看到有一些项目多页面项目是基于webapck1.0的,我这个是在webpack2.x上布置修改. 项目地址: https://github.com/yurizhang/vue_multiple_page   直接拉下来看代码就好,没几行修改. 主要修改:几个文件即可 ,主要是node.js代码,使用beyond file compare比较一下即可. 项目地址: https://github.com/yuri

vue cli脚手架项目利用webpack给生产环境和发布环境配置不同的接口地址或者不同的变量值。

废话不多说,直接进入正题,此文以配置不同的接口域名地址为例子 项目根目录下有一个config文件夹,基础项目的话里面至少包括三个文件, 1.dev.env.js 2.index.js 3.prod.env.js 我们需要做配置的就是第一个和第三个. 其实这两个文件内容就是针对生产环境和发布环境设置不同的参数的文件,那么打开dev.en.js,开发环境.原本代码如下: 'use strict' const merge = require('webpack-merge') const prodEnv

用 vue cli 脚手架搭建单页面 Vue 应用(进阶2)

1.配置 Node 环境. 自行百度吧. 安装好了之后,打开 cmd .运行 node -v .显示版本号,就是安装成功了. 注:不要安装8.0.0以上的版本,和 vue-cli 不兼容. 我使用的 6.10.3 的版本,相对稳定. 2.使用 npm 管理依赖 使用 node 自带的包管理工具 npm 管理项目中的依赖,由于 npm 的服务器在国外.经常会遇到速度奇慢或者下载不下来依赖的情况,所以推荐使用淘宝镜像. npm install-g cnpm--registry=https://reg

更新到@vue/cli 4.1.1版本的前端开发前的准备

一.概念简述 1.node.js目的是提供一个JS的运行环境. 2.npm(node package manager)是一个JS包管理器. 二.检查自己的电脑是否已安装相关配置 1.查看node.js 2.查看npm或cnpm 这里我是用了淘宝的cnpm镜像 3.查看vue版本 可以查看vue内置命令 有ui这个命令方可使用vue ui进入UI界面的项目初始化. 三.通过配置达到上述的配置结果 首先,去node.js官网下载最新版的node.js,下载好根据提示安装完毕即可. 其次,npm是随着

vue/cli 3.0 脚手架【进阶】

安装vue-cli3   npm install -g @vue/cli 创建项目 vue-cli-test 脚手架-项目-成功-运行项目 基于vue-cli配置移动端自适应 转自:http://hjingren.cn/2017/06/16/%E5%9F%BA%E4%BA%8Evue-cli%E9%85%8D%E7%BD%AE%E7%A7%BB%E5%8A%A8%E7%AB%AF%E8%87%AA%E9%80%82%E5%BA%94/ 配置 flexible 安装 lib-flexible  

在vue cli 3脚手架里引入tinymce 5富文本编辑器

本文主要讲的是在Vue cli 3脚手架搭建的项目里如何引用Tinymce 5富文本编辑器. 请注意识别"版本号",不同版本的配置细节有所不同. 1. tinymce的安装 1. 安装tinymce-vue npm install @tinymce/tinymce-vue -S 2. 安装tinymce npm install tinymce -S 3. 下载中文语言包 tinymce提供的语言包很多,选择下载中文语言包 2. 使用方法 1. 文件操作 在项目根目录的public目录下