视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Vue Cli3 创建项目的方法步骤
2020-11-27 22:06:14 责编:小采
文档

最近的开发项目中使用了vue-cli 3.0,使用体验可以说非常棒了,模板更加制定化,配置更加简洁。以下总结下应用过程中的一些经验。

1. 安装

npm install -g @vue/cli

2. 创建一个项目

vue create iview-admin
# OR
vue ui

  • default (babel, eslint) 默认套餐,提供 babel 和 eslint 支持。
  • Manually select features 自己去选择需要的功能,提供更多的特性选择。比如如果想要支持 TypeScript ,就应该选择这一项。
    1. TypeScript 支持使用 TypeScript 书写源码。
    2. Progressive Web App (PWA) Support PWA 支持。
    3. Router 支持 vue-router 。
    4. Vuex 支持 vuex 。
    5. CSS Pre-processors 支持 CSS 预处理器。
    6. Linter / Formatter 支持代码风格检查和格式化。
    7. Unit Testing 支持单元测试。
    8. E2E Testing 支持 E2E 测试。

    3. 运行项目

    $ npm run serve

    4. 在根目录创建 vue.config.js 空文件,配置 文件

    module.exports = {
     /** 区分打包环境与开发环境
     * process.env.NODE_ENV==='production' (打包环境)
     * process.env.NODE_ENV==='development' (开发环境)
     * baseUrl: process.env.NODE_ENV==='production'?"https://cdn.didabisai.com/front/":'front/',
     */
     // 基本路径
     baseUrl: '/',
     // 
    输出文件目录 outputDir: 'dist', // eslint-loader 是否在保存的时候检查 lintOnSave: true, // use the full build with in-browser compiler? // https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only // compiler: false, // webpack配置 // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md chainWebpack: () => {}, configureWebpack: () => {}, //如果想要引入babel-polyfill可以这样写 // configureWebpack: (config) => { // config.entry = ["babel-polyfill", "./src/main.js"] // }, // vue-loader 配置项 // https://vue-loader.vuejs.org/en/options.html // vueLoader: {}, // 生产环境是否生成 sourceMap 文件 productionSourceMap: true, // css相关配置 css: { // 是否使用css分离插件 ExtractTextPlugin extract: true, // 开启 CSS source maps? sourceMap: false, // css预设器配置项 loaderOptions: {}, // 启用 CSS modules for all css / pre-processor files. modules: false }, // use thread-loader for babel & TS in production build // enabled by default if the machine has more than 1 cores parallel: require('os').cpus().length > 1, // 是否启用dll // See https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode // dll: false, // PWA 插件相关配置 // see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa pwa: {}, // webpack-dev-server 相关配置 devServer: { // open: process.platform === 'darwin', // 自动打开浏览器 open: true, host: '0.0.0.0', port: 8080, https: false, hotOnly: false, // 处理跨域问题 proxy: {}, // 设置代理 before: app => {} }, // 第三方插件配置 pluginOptions: { // ... } }

    设置代理

    # string
    
    module.exports = {
    
     devServer: {
    
     proxy: '<url>'
    
     }
    
    }
    
     
    
    # Object
    
    module.exports = {
    
     devServer: {
    
     proxy: {
    
     '/api': {
    
     target: '<url>',
    
     ws: true,
    
     changeOrigin: true
    
     },
    
     '/foo': {
    
     target: '<other_url>'
    
     }
    
     }
    
     }
    
    }

    启用dll

    启用dll后,我们的动态库文件每次打包生成的vendor的[chunkhash]值就会一样,其值可以是 true/false,也可以制定特定的代码库。

    module.exports = {
    
     dll: true
    
    }
    
    module.exports = {
    
     dll: [
    
     'dep-a',
    
     'dep-b/some/nested/file.js'
    
     ]
    
    }

    静态资源路径

    相对路径

  • 静态资源路径以 @  开头代表  <projectRoot>/src
  • 静态资源路径以 ~  开头,可以引入node modules内的资源
  • public文件夹里的静态资源引用

    # 在 public/index.html中引用静态资源
    
    <%= webpackConfig.output.publicPath %>
    
    <link rel="shortcut icon" href="<%= webpackConfig.output.publicPath %>favicon.ico" rel="external nofollow" >
    
    # vue templates中,需要在data中定义baseUrl
    
    <template>
    
     <img :src="`${baseUrl}my-image.png`">
    
    </template>
    
    <script>
    
     data () {
    
     return {
    
     baseUrl: process.env.BASE_URL
    
     }
    
     }
    
    </script>

    webpack配置修改

    用 webpack-chain 修改webpack相关配置,强烈建议先熟悉webpack-chain和vue-cli 源码,以便更好地理解这个选项的配置项。

    对模块处理配置

    // vue.config.js
    
    module.exports = {
    
     chainWebpack: config => {
    
     config.module
    
     .rule('js')
    
     .include
    
     .add(/some-module-to-transpile/) // 要处理的模块
    
     }
    
    }

    修改webpack Loader配置

    // vue.config.js
    
    module.exports = {
    
     chainWebpack: config => {
    
     config.module
    
     .rule('scss')
    
     .use('sass-loader')
    
     .tap(options =>
    
     merge(options, {
    
     includePaths: [path.resolve(__dirname, 'node_modules')],
    
     })
    
     )
    
     }
    
    }

    修改webpack Plugin配置

    // vue.config.js
    
    module.exports = {
    
     chainWebpack: config => {
    
     config
    
     .plugin('html')
    
     .tap(args => {
    
     return [/* new args to pass to html-webpack-plugin's constructor */]
    
     })
    
     }
    
    }
    
    

    eg: 在本次项目较小,只对uglifyjs进行了少量的修改,后期如果还有配置上优化会继续添加。

    chainWebpack: config => {
    
     if (process.env.NODE_ENV === 'production') {
    
     config
    
     .plugin('uglify')
    
     .tap(([options]) =>{
    
     // 去除 console.log
    
     return [Object.assign(options, {
    
     uglifyOptions: { compress: {
    
     drop_console : true,
    
     pure_funcs: ['console.log']
    
     }}
    
     })]
    
     })
    
     }
    
    }

    全局变量的设置

    在项目根目录创建以下项目:

    .env # 在所有环节中执行
    
    .env.local # 在所有环境中执行,git会ignored
    
    .env.[mode] # 只在特定环境执行( [mode] 可以是 "development", "production" or "test" )
    
    .env.[mode].local # 在特定环境执行, git会ignored
    
    .env.development # 只在生产环境执行
    
    .env.production # 只在开发环境执行

    在文件里配置键值对:

    # 键名须以VUE_APP开头
    
    VUE_APP_SECRET=secret
    
    

    在项目中访问:

    console.log(process.env.VUE_APP_SECRET)

    这样项目中的 process.env.VUE_APP_SECRET 就会被 secret 所替代。

    vue-cli 3 就项目性能而言已经相当友好了,私有制定性也特别强,各种配置也特别贴心,可以根据项目大小和特性制定私有预设,对前期项目搭建而言效率极大提升了。

    具体请查看 Vue Cli 官网

    下载本文
    显示全文
    专题