page open development dev content body app npm webpack webpack-dev-server

npm - open - webpack-dev-server no vigila mis cambios de archivos



webpack dev server-- mode development (5)

@funkybunky identificó el problema correcto pero (en mi humilde opinión) lo solucionó de la manera incorrecta. Al menos en mi caso, el paquete web estaba tratando de ver cada archivo que usaba, incluida una cadena de miles de archivos de dependencias extraídas de npm . Agregué esto a mi configuración, según los documentos :

devServer: { watchOptions: { ignored: /node_modules/ } }

Por supuesto que legítimamente podría tener miles de archivos que podrían necesitar ser vistos, en cuyo caso siga adelante y aumente el límite, pero probablemente sea mejor que ignore las bibliotecas de proveedores que probablemente no cambien.

Cuando cambio mis archivos mientras se está ejecutando webpack-dev-server, los archivos del paquete no se actualizan. Aquí están mis archivos webpack.config.js y package.json, como puede ver en mi script npm, he resuelto ejecutar el webpack watch webpack-dev-server en el mismo comando ( npm run watch & webpack-dev-server --content-base ./ --port 9966 ):

webpack.config.js:

''use strict''; var ReactStylePlugin = require(''react-style-webpack-plugin''); var ExtractTextPlugin = require(''extract-text-webpack-plugin''); var webpack = require(''webpack''); module.exports = { devtool: ''sourcemap'', entry: [''./js/main.js''], output: { filename: ''bundle.js'', path: __dirname + ''/assets'', publicPath: __dirname + ''/'' }, module: { loaders: [ { test: //.js$/, loaders: [ ReactStylePlugin.loader(), ''jsx-loader?harmony'' ] }, { test: //.css$/, loader: ExtractTextPlugin.extract(''css-loader'') } ] }, plugins: [ new ReactStylePlugin(''bundle.css''), new webpack.DefinePlugin({ ''process.env'': { // To enable production mode: //NODE_ENV: JSON.stringify(''production'') } }) ] }

package.json:

{ "name": "reactTest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo /"Error: no test specified/" && exit 1", "watch": "webpack --watch", "build": "webpack", "web": "npm run watch & webpack-dev-server --content-base ./ --port 9966" }, "author": "", "license": "ISC", "devDependencies": { "css-loader": "^0.10.1", "extract-text-webpack-plugin": "^0.3.8", "jsx-loader": "^0.13.1", "react-style-webpack-plugin": "^0.4.0", "style-loader": "^0.10.2", "url-loader": "^0.5.5", "webpack": "^1.8.5", "webpack-dev-server": "^1.8.0" }, "dependencies": { "react": "^0.13.1", "react-style": "^0.5.3" } }

mi estructura de directorio es:

assets bundle.css bundle.css.map bundle.js bundle.js.map js AppActions.js Profile.css.js ProfileList.js main.js AppConstants.js AppStore.js Profile.js ResultPage.js package.json index.html node_modules webpack.config.js

cada archivo dentro del directorio de assets es generado por el paquete web


Con el fin de obtener el paquete web para ver los cambios de mi archivo (Ubuntu 14.04), tuve que aumentar el número de observadores (había aumentado el número antes, pero todavía era demasiado bajo):

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Fuente en los documentos oficiales: https://webpack.github.io/docs/troubleshooting.html#not-enough-watchers

Primero sospeché que la causa era fsevents que no funciona en Ubuntu, pero aparentemente este no era el caso.

Además, como ahora la observación y la compilación funcionaban, pero la parte de actualización automática del navegador no funcionaba, añadí el --inline param a la respuesta de @deowk que habilita el "modo en línea": webpack-dev-server --content-base ./ --port 9966 --hot --inline

Cita de los documentos oficiales: "La forma más fácil de usar el reemplazo de módulo activo con el servidor webpack-dev es usar el modo en línea". Fuente: https://webpack.github.io/docs/webpack-dev-server.html#hot-module-replacement


En mi caso, el error fue causado por un espacio vacío en el nombre del directorio, al cambiar "Nombre del repositorio" por "Nombre del repositorio", ¡todo funcionó bien!


Pondré esto aquí en caso de que ayude a alguien. Mi problema era el mismo, pero se debía a una mayúscula inconsistente de los nombres de directorio y la declaración de alias de paquete web.

Tenía un directorio WebGL que hacía referencia en mis alias como webgl , y lamentablemente esto funcionó para la compilación, pero no funcionó para la webgl de código.


necesita ejecutar webpack-dev-server con el indicador --hot:

webpack-dev-server --content-base ./ --port 9966 --hot

A continuación, puede acceder a la versión de carga en caliente localhost: 9966 / webpack-dev-server /

No es necesario ejecutar la vigilancia también.

actualizar:

Esta entrada en su configuración de paquete web debe cambiar:

entry: [''./js/main.js''], -> entry: [''webpack/hot/dev-server'' , ''./js/main.js'']

Cambie su entrada de PublicPath:

publicPath: ''/assets/''