如何在 Vue-cli 中配置 Webpack?

Hen*_*Jan 6 javascript webpack vue.js vue-cli

编辑:我停止尝试让它工作。


我正在使用 Vue-cli ( https://github.com/chrisvfritz/vue-enterprise-boilerplate ),它在水下使用 Webpack 创建网站。

现在我想更改我的webpack.config.js但是这个文件不存在。

vue.config.js包含一个configureWebpack属性,但这似乎与普通 Webpack 配置的格式不同。

我想使用的 Webpack 配置是这样的:

// Webpack config
const webpack = require('webpack');
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const StartServerPlugin = require('start-server-webpack-plugin');

module.exports = {
    entry: ['webpack/hot/poll?1000', './src/index'],
    watch: true,
    target: 'node',
    node: {
        __filename: true,
        __dirname: true
    },
    externals: [nodeExternals({ whitelist: ['webpack/hot/poll?1000'] })],
    module: {
        rules: [
            ...
        ]
    },
    plugins: [
        new StartServerPlugin('server.js'),
        new webpack.NamedModulesPlugin(),
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoEmitOnErrorsPlugin(),
        new webpack.DefinePlugin({
            'process.env': { BUILD_TARGET: JSON.stringify('server') }
        })
    ],
    output: { path: path.join(__dirname, 'dist'), filename: 'server.js' }
};
Run Code Online (Sandbox Code Playgroud)

我不知道把它放在哪里vue.config.js,看起来像这样:

// Vue config
const appConfig = require('./src/app.config')

module.exports = {
  configureWebpack: {
    // We provide the app's title in Webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: appConfig.title,
    // Set up all the aliases we use in our app.
    resolve: {
      alias: require('./aliases.config').webpack,
    },
    module: {
      rules: [
        {
          test: /\.styl$/,
          use: [
            'style-loader',
            {
              loader: 'css-loader',
              options: {
                modules: true,
                localIdentName: '[name]__[local]___[hash:base64:5]',
              },
            },
            'stylus-loader',
          ],
        },
      ],
    },
  },
  css: {
    // Enable CSS source maps.
    sourceMap: true,
    // Enable CSS modules for all CSS/pre-processor files.
    // This option does not affect *.vue files.
    modules: true,
  },
  // Split dependencies into their own bundle.
  // https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md#dll-mode
  dll: true,
  // Configure Webpack's dev server.
  // https://github.com/vuejs/vue-cli/blob/dev/docs/cli-service.md
  devServer: {
    ...(process.env.API_BASE_URL
      ? // Proxy API endpoints to the production base URL.
        { proxy: { '/api': { target: process.env.API_BASE_URL } } }
      : // Proxy API endpoints a local mock API.
        { before: require('./tests/mock-api') }),
  },
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过去webpack.config.jsapp.config.js现在Vue-cli抱怨没有得到满足的依赖关系。

These dependencies were not found:

* @components/_globals in ./src/main.js
* @router in ./src/main.js
...
Run Code Online (Sandbox Code Playgroud)

Jan*_*zek 7

Vue CLI 3.0.0 的解决方案

在项目主目录中创建vue.config.js文件:

module.exports = {
  configureWebpack: {
    devServer: {
        watchOptions: {
          ignored: ['node_modules'],
          aggregateTimeout: 300,
          poll: 1500
        },
        public: '192.168.56.132' // vagrant machine address
    }
  }
}
Run Code Online (Sandbox Code Playgroud)