以前写了一篇vue-cli3的配置(https://segmentfault.com/a/11...),建议升级到vue-cli4。
vue-cli4脚手架建立的目录更加的合理性,其余好像没什么变化
vue-cli的升级官网上有介绍,建议都使用yarn
卸载:css
npm uninstall vue-cli -g或yarn global remove vue-cli 若是你的版本是vue-cli3的话, npm uninstall @vue/cli -g或yarn global remove @vue/cli
安装:vue
npm install -g @vue/cli # OR yarn global add @vue/cli
建立你的项目(建立的方式看上面的连接)webpack
vue create hello-world(项目名)
重点介绍分环境打包下的vue.config.js代码以下(注意process.env.outputDir和process.env.VUE_APP_MODE和.env文件有关)git
const path = require('path') module.exports = { publicPath: './', // 基本路径,打包时加上. outputDir: process.env.outputDir, // 输出文件目录 lintOnSave: false, // eslint-loader 是否在保存的时候检查 // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md // webpack配置 chainWebpack: (config) => { config.resolve.symlinks(true) }, configureWebpack: (config) => { if (process.env.VUE_APP_MODE === 'production') { // 为生产环境修改配置... config.mode = 'production' } else { // 为开发环境修改配置... config.mode = 'development' } Object.assign(config, { // 开发生产共同配置 resolve: { alias: { '@': path.resolve(__dirname, './src'), '@c': path.resolve(__dirname, './src/components'), '@p': path.resolve(__dirname, './src/views') } // 别名配置 } }) }, productionSourceMap: false, // 生产环境是否生成 sourceMap 文件 // css相关配置 css: { // extract: true, // 是否使用css分离插件 ExtractTextPlugin sourceMap: false, // 开启 CSS source maps? loaderOptions: { css: {}, // 这里的选项会传递给 css-loader postcss: { plugins: [ // 把px单位换算成rem单位 require('postcss-pxtorem')({ rootValue: 75, // 换算的基数(设计图750的根字体为32) selectorBlackList: ['.van-'], // 要忽略的选择器并保留为px。 propList: ['*'], // 能够从px更改成rem的属性。 minPixelValue: 2 // 设置要替换的最小像素值。 }), require('autoprefixer') ] // plugins: [ // require('autoprefixer') // ] } // 这里的选项会传递给 postcss-loader }, // css预设器配置项 详见https://cli.vuejs.org/zh/config/#css-loaderoptions // modules: false, // 启用 CSS modules for all css / pre-processor files. requireModuleExtension: true }, parallel: require('os').cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅做用于生产构建。 pwa: {}, // PWA 插件相关配置 see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa // webpack-dev-server 相关配置 devServer: { open: true, // 自动打开浏览器 host: '0.0.0.0', // 容许外部ip访问 port: 8022, // 端口 https: false, // 启用https overlay: { warnings: true, errors: true }, // 错误、警告在页面弹出 // proxy: { // [process.env.VUE_APP_MODE]: { // target: `http://cs.ep.eichong.com:2482/api`, // changeOrigin: true, // pathRewrite: {//看后台是否有,决定是否重写 // ["^" + process.env.VUE_APP_API_URL]: "" // } // } }, // 第三方插件配置 pluginOptions: {} }
不一样环境的.env文件(NODE_ENV这个参数好像没什么关系),VUE_APP_API_URL为接口网址,能够直接调用process.env.VUE_APP_API_URLgithub
文件.env.devweb
NODE_ENV = 'production' VUE_APP_MODE = 'dev' VUE_APP_API_URL = '--------' outputDir = dev
文件.env.developmentvue-cli
NODE_ENV = 'production' VUE_APP_MODE = 'development' VUE_APP_API_URL = '------' outputDir = development
文件.env.prenpm
NODE_ENV = 'production' VUE_APP_MODE = 'pre' VUE_APP_API_URL = '----' outputDir = pre
文件.env.productionjson
NODE_ENV = 'production' VUE_APP_MODE = 'production' VUE_APP_API_URL = '------' outputDir = production
修改package.json,打包命令分别为
yarn serve
yarn build
yarn build-dev
yarn build-test
yarn build-pre
yarn build-publishsegmentfault
"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "build-dev": "vue-cli-service build --mode dev", "build-test": "vue-cli-service build --mode test", "build-pre": "vue-cli-service build --mode pre", "build-publish": "vue-cli-service build && vue-cli-service build --mode production", "lint": "vue-cli-service lint" }
区别打包的输出路径分别为dist,dev,test,pre,production
而后修改.gitignore文件,增长以下
/dist /dev /test /pre /production