美文网首页
webpack 入门(二)—— 配置文件

webpack 入门(二)—— 配置文件

作者: 154396b61865 | 来源:发表于2018-01-19 21:50 被阅读0次

    webpack 配置

    "scripts": {
        "dev": "node build/dev-server.js",
        "build": "node build/build.js",
        "lint": "eslint --ext .js,.vue src"
    }
    

    build/dev-server.js

    var webpackConfig = require('./webpack.dev.conf') // 使用 dev 环境的 webpack 配置
    var compiler = webpack(webpackConfig) // 启动 webpack 进行编译
    /* 启动 webpack-dev-middleware,将 编译后的文件暂存到内存中 */
    var devMiddleware = require('webpack-dev-middleware')(compiler, {
      publicPath: webpackConfig.output.publicPath,
      stats: {
        colors: true,
        chunks: false
      }
    })
    

    build/build.js

    var webpackConfig = require('./webpack.prod.conf') // 加载 webpack.prod.conf
    webpack(webpackConfig, function (err, stats) {
      // 编译成功的回调函数
      spinner.stop()
      if (err) throw err
      process.stdout.write(stats.toString({
        colors: true,
        modules: false,
        children: false,
        chunks: false,
        chunkModules: false
      }) + '\n')
    })
    

    build/webpack.dev.conf.js

    var baseWebpackConfig = require('./webpack.base.conf') // 加载 webpack.base.conf
    module.exports = merge(baseWebpackConfig, {
      module: {
        // 使用 styleLoaders
        loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
      },
      ...
    })
    

    build/webpack.base.conf.js

    var config = require('../config') // 引入 config/index.js
    
    /* 是否在 dev 环境下开启 cssSourceMap ,在 config/index.js 中可配置 */
    var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap)
    /* 是否在 production 环境下开启 cssSourceMap ,在 config/index.js 中可配置 */
    var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap)
    module.exports = {
      entry: {
        app: './src/main.js' // 编译文件入口
      },
      output: {
        path: config.build.assetsRoot, // 编译输出的静态资源根路径
        publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, // 正式发布环境下编译输出的上线路径的根路径
        filename: '[name].js' // 编译输出的文件名
      },
      ...
    })
    

    onfig/index.js

    var path = require('path')
    module.exports = {
      build: { // production 环境
        env: require('./prod.env'), // 使用 config/prod.env.js 中定义的编译环境
        index: path.resolve(__dirname, '../dist/index.html'), // 编译输入的 index.html 文件
        assetsRoot: path.resolve(__dirname, '../dist'), // 编译输出的静态资源路径
        assetsSubDirectory: 'static', // 编译输出的二级目录
        assetsPublicPath: '/', // 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
        productionSourceMap: true, // 是否开启 cssSourceMap
        // Gzip off by default as many popular static hosts such as
        // Surge or Netlify already gzip all static assets for you.
        // Before setting to `true`, make sure to:
        // npm install --save-dev compression-webpack-plugin
        productionGzip: false, // 是否开启 gzip
        productionGzipExtensions: ['js', 'css'] // 需要使用 gzip 压缩的文件扩展名
      },
      dev: { // dev 环境
        env: require('./dev.env'), // 使用 config/dev.env.js 中定义的编译环境
        port: 8080, // 运行测试页面的端口
        assetsSubDirectory: 'static', // 编译输出的二级目录
        assetsPublicPath: '/', // 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
        proxyTable: {}, // 需要 proxyTable 代理的接口(可跨域)
        cssSourceMap: false // 是否开启 cssSourceMap(因为一些 bug 此选项默认关闭,详情可参考 https://github.com/webpack/css-loader#sourcemaps)
      }
    }
    

    相关文章

      网友评论

          本文标题:webpack 入门(二)—— 配置文件

          本文链接:https://www.haomeiwen.com/subject/uuiaoxtx.html