捆绑.js在使用 Webpack-dev-server 时 webpack 构建中缺少

bundle.js missing from webpack build when using webpack-dev-server

本文关键字:构建 webpack Webpack-dev-server js 捆绑      更新时间:2023-09-26

我看了类似的,但找不到解决我问题的假设答案。我找不到捆绑.js文件,即使我指定了它应该输出的位置并且一切都在浏览器中工作。我知道 webpack-dev 服务器正在从内存加载文件,并且没有将任何内容写入磁盘,我如何构建要构建的文件并将其添加到配置文件的输出属性中指定的 dir 中?

这是我的包.json:

    {
    "name": "redux-simple-starter",
    "version": "1.0.0",
    "description": "Simple starter package for Redux with React and Babel support",
    "main": "index.js",
    "repository": "git@github.com:StephenGrider/ReduxSimpleStarter.git",
    "scripts": {
     "start": "./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
      "babel-core": "^6.2.1",
      "babel-loader": "^6.2.0",
      "babel-preset-es2015": "^6.1.18",
      "babel-preset-react": "^6.1.18",
      "react-hot-loader": "^1.3.0",
     "webpack": "^1.12.9",
     "webpack-dev-server": "^1.14.0"
     },
     "dependencies": {
     "babel-preset-stage-1": "^6.1.18",
     "react": "^0.14.3",
     "react-dom": "^0.14.3",
     "react-redux": "^4.0.0",
     "redux": "^3.0.4"
    }
    }

webpack 配置:

    var path = require('path');
    var webpack = require('webpack');
    module.exports = {
     entry: [
       'webpack-dev-server/client?http://localhost:8080',
       'webpack/hot/only-dev-server',
       './src/index.js'
     ],
     output: {
       path: path.join(__dirname, 'assets'),
       publicPath: '/',
       filename: 'bundle.js'
     },
     module: {
       loaders: [{
         exclude: /node_modules/,
         loader: 'babel'
       }]
     },
     resolve: {
       extensions: ['', '.js', '.jsx']
     },
     devServer: {
       contentBase: './'
     },
     plugins: [
       new webpack.HotModuleReplacementPlugin()
     ]
    };       

使用开发服务器时,输出将放置在其上。因此,您实际上不会在文件中看到它。从索引.html文件中,您需要从服务器加载它。

例如,对于我的应用,我在开发服务器、供应商文件中加载,然后加载我自己的代码。

<script src="http://localhost:8080/webpack-dev-server.js"></script>
<script src="http://localhost:8080/build/vendor.js"></script>
<script src="http://localhost:8080/build/app.js"></script> 

这是我的 webpack 配置的相关部分。当我也从静态构建包加载它时,有一些不必要的遗留部分。

  app: [
        'webpack/hot/dev-server',
        'webpack-dev-server/client?http://localhost:8080',
        './client/index.js'
        ]
},
output: {
    path: __dirname + '/client/build',
    publicPath: '/build/',
    filename: '[name].js',
    pathinfo: true
},

这个 Webpack 插件强制服务器将捆绑包写入磁盘。

虽然我同意 Austin 和 lux 的观点,但如果您需要将文件保存在磁盘中,请直接调用 webpack。

在 webpack.config.js 文件中包含以下脚本

devServer: {
  writeToDisk: true
}

你也可以告诉 webpack 使用配置中的标志来观看。这将生成捆绑文件

module.exports = {
    watch: true,
};

将 package.json 文件的脚本对象替换为以下对象:

"scripts": {
     "start": "npm run build",
     "build": "webpack -p && ./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build"
},

然后,运行$ npm start