当前位置 博文首页 > 李猫er:【前端开发】Vue-CLI4 &Vue-CLI3 与Vue-CLI2 的区别

    李猫er:【前端开发】Vue-CLI4 &Vue-CLI3 与Vue-CLI2 的区别

    作者:[db:作者] 时间:2021-07-08 13:00

    前面一直用Vue-CLI2 搭建Vue 项目,后面用Vue-CLI4 搭建了一个新的Vue 项目,发现Vue项目有些文件build文件、config文件目录直接整没了… 好家伙,那我怎么配置??

    撸文档,Vue-CLI4、Vue-CLI3 与Vue-CLI2 之间的区别:使用后Vue-CLI4总体上与Vue-CLI3区别不大,Vue-CLI4与Vue-CLI2最直接的区别:

    1、安装:

    Vue-CLI2:
    npm install -g vue-cli 或 cnpm install -g vue-cli
    
    Vue-CLI4:
    npm install -g @vue/cli 或 cnpm install -g @vue/cli
    

    2、卸载

    Vue-CLI2:
    npm uninstall -g vue-cli 或 cnpm uninstall -g vue-cli
    
    Vue-CLI4:
    npm uninstall -g @vue/cli 或 cnpm uninstall -g @vue/cli
    

    3、创建项目

    Vue-CLI2:
    vue init webpack my-project2
    

    image.png

    Vue-CLI4:

    image.png

    vue create my-project4
    

    4、项目目录结构

    Vue-CLI2:

    image.png

    Vue-CLI4:

    image.png

    5、项目运行

    Vue-CLI2:
    npm run dev
    
    Vue-CLI4:
    npm run serve
    

    那问题来了,主要的build文件、config文件没了,Vue-CLI4搭建的Vue项目怎么配置打包优化之类的,Vue CLI官方给出了新的全局配置解决方案项:

    vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。

    项目根目录下 新建一个 vue.config.js 文件,自己配置项目相关的配置即可。

    6、vue.config.js 配置选项

    module.exports = {
        vue.config.js 配置选项
        //  基本路径
        publicPath: "./",
    
        //  构建时的输出目录
        outputDir: "dist",
        
        //  放置静态资源的目录
        assetsDir: "static",
    
        //  html 的输出路径
        indexPath: "index.html",
    
        //文件名哈希
        filenameHashing: true,
    
        //用于多页配置,默认是 undefined
        pages: {
            index: {
                // page 的入口文件
                entry: 'src/index/main.js',
    
                // 模板文件
                template: 'public/index.html',
    
                // 在 dist/index.html 的输出文件
                filename: 'index.html',
    
                // 当使用页面 title 选项时,
                // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
                title: 'Index Page',
    
                // 在这个页面中包含的块,默认情况下会包含
                // 提取出来的通用 chunk 和 vendor chunk。
                chunks: ['chunk-vendors', 'chunk-common', 'index']
            },
    
            // 当使用只有入口的字符串格式时,
            // 模板文件默认是 `public/subpage.html`
            // 如果不存在,就回退到 `public/index.html`。
            // 输出文件默认是 `subpage.html`。
            subpage: 'src/subpage/main.js'
        },
    
        //  是否在保存的时候使用 `eslint-loader` 进行检查。
        lintOnSave: true,
    
        //  是否使用带有浏览器内编译器的完整构建版本
        runtimeCompiler: false,
    
        //  babel-loader 默认会跳过 node_modules 依赖。
        transpileDependencies: [ /* string or regex */ ],
    
        //  是否为生产环境构建生成 source map?
        productionSourceMap: true,
    
        //  设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin 属性。
        crossorigin: "",
    
        //  在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启用 Subresource Integrity (SRI)。
        integrity: false,
    
        //  调整内部的 webpack 配置
        configureWebpack: () => {}, //(Object | Function)
        chainWebpack: () => {},
    
        // 配置 webpack-dev-server 行为。
        devServer: {
            open: process.platform === 'darwin',
    
            host: 'localhost',
            port: 8080,
            https: false,
            hotOnly: false,
    
            // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理
    
            proxy: {
                '/api': {
                    target: "http://app.ly.com",
                    changeOrigin: true,
                    secure: false,
                    pathRewrite: {
                        "^/api": ""
                    }
    
                },
    
                '/foo': {
                    target: '<other_url>'
                }
    
            }, // string | Object
            
            before: app => {}
        },
    
        // CSS 相关选项
        css: {
            // 将组件内的 CSS 提取到一个单独的 CSS 文件 (只用在生产环境中)
            // 也可以是一个传递给 `extract-text-webpack-plugin` 的选项对象
            extract: true,
    
            // 是否开启 CSS source map?
    
            sourceMap: false,
    
            // 为预处理器的 loader 传递自定义选项。比如传递给
            // Css-loader 时,使用 `{ Css: { ... } }`。
    
            loaderOptions: {
                css: {
                    // 这里的选项会传递给 css-loader
                },
    
                postcss: {
                    // 这里的选项会传递给 postcss-loader
                }
            },
    
            // 为所有的 CSS 及其预处理文件开启 CSS Modules。
            // 这个选项不会影响 `*.vue` 文件。
            modules: false
    
        },
    
        // 在生产环境下为 Babel 和 TypeScript 使用 `thread-loader`
        // 在多核机器下会默认开启。
        parallel: require('os').cpus().length > 1,
    
        // PWA 插件的选项。
        // 查阅 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md
    
        pwa: {},
    
        // 三方插件的选项
        pluginOptions: {
            // ...
    
        }
    
    }
    
    
    cs