Webpack不包括我们所有的js和jsx文件,甚至是那些在同一个目录下的文件
我们正在尝试升级使用WebPack构build的React.js应用程序。 在我们的升级中,我们正在从Webpack 1.0迁移到2.0,并且我已经对升级进行了“必要的”更改。 但是,当我查看包含的文件时,它正在构build和编译,它是以前包含的文件的一个非常小的规模。
例如,我们在React Flux Actions目录中有34个文件。 有些文件的.js扩展名是.jsx。 但是,在这34个文件中,只有1个出现在构build中。 另一个发生了什么事情33.这个扩展名是.js,但是那个目录下还有更多的.js文件。
我错过了什么?
这是我们的主要configuration文件。
var path = require('path'); var webpack = require('webpack'); var StringReplacePlugin = require("string-replace-webpack-plugin"); var Environment = require('./js/environment'); module.exports = { entry: [ './js' ], output: { path: path.join(__dirname, 'build'), filename: 'bundle.js', }, plugins: [ new StringReplacePlugin(), new webpack.LoaderOptionsPlugin({ options: { tslint: { emitErrors: true, failOnHint: true } } }) ], resolve: { extensions: ['*', '.js', '.jsx'], modules: [ path.join(__dirname, 'node_modules'), path.join(__dirname, 'js'), path.join(__dirname, 'jsx') ] }, module: { loaders: [{ test: /\.jsx?$/, exclude: /node_modules/, loaders: ['react-hot-loader/webpack', 'babel-loader' ] }, { test: /js\/constants.js$/, loader: StringReplacePlugin.replace({ replacements: [{ pattern: /localhost/g, replacement: Environment.getBackendURL }] }) }] } };
这是我们热的重新加载本地版本,我认为这两个文件被使用,上面这一个。 但是我现在只做“npm run build”命令,然后运行“npm run local”
var path = require('path'); var webpack = require('webpack'); module.exports = { devtool: 'eval', entry: [ 'webpack-dev-server/client?http://localhost:3000', 'webpack/hot/only-dev-server', './js/index' ], output: { path: path.join(__dirname, 'build-hot'), filename: 'bundle.js', publicPath: '/build/' }, plugins: [ new webpack.HotModuleReplacementPlugin(), // new webpack.NoErrorsPlugin() new webpack.LoaderOptionsPlugin({ options: { tslint: { emitErrors: true, failOnHint: true } } }) ], resolve: { extensions: ['*', '.js', '.jsx'], modules: [ path.join(__dirname, 'node_modules'), path.join(__dirname, 'js'), path.join(__dirname, 'jsx') ] }, module: { loaders: [{ test: /\.jsx?$/, exclude: /node_modules/, loaders: ['react-hot-loader/webpack', 'babel-loader' ] }] } };
基于迈克尔的回答,有一个我发现是不同的,感觉可能是这个原因,但是我没有看到Webpack2中的任何预装载器。 就这个。
preLoaders: [ { test: /\.jsx?$/, loader: "source-map-loader" } ],
Webpack开始查看您的入口点,并且只包含正在导入的文件,而不仅仅包括项目中的每个文件(如概念 -正式文档的input中所述)。
当你的入口点是./js
,它将以./js/index.js
开始(这就是Node.js,因此webpack会把Folder 作为模块导入),所以你不会在每个文件都包含在这个目录中。 如果您不在./js/index.js
或其依赖项中导入它们,那么文件将不会被包含在内。 据推测,你不这样做,这就是为什么只有这一个文件被包含在捆绑。
这种行为从webpack 1到webpack 2并没有改变。令人惊讶的是它与webpack 1的工作方式不同,但也许你在迁移过程中改变了一些你不知道的东西。
- 摩卡返回“callback不是一个函数”asynchronous调用
- 如何防止发电机function的babel
- 如何在webpack中使用ES6 loader和brfs变换?
- React,babel,webpack不parsingjsx代码
- 巴贝尔可以编译为“node –harmony”而不是ES5吗?
- NodeJS在./app/app.jsx中启动错误模块构build失败:ReferenceError:
- Symlinking与npm链接反应模块为本地开发提供了错误
- Heroku上的BabelJs:无法find相对于目录“/ app”的预设“env”
- RollupJS`解决失败:错误:无法find模块'babel-runtime'`