1. {
    2. "name": "smash-template-react-v16",
    3. "version": "1.0.0",
    4. "description": "",
    5. "main": "index.js",
    6. "scripts": {
    7. "test": "echo \"Error: no test specified\" && exit 1",
    8. "dev": "webpack-dev-server --mode development",
    9. "build": "webpack --mode production"
    10. },
    11. "author": "",
    12. "license": "ISC",
    13. "dependencies": {
    14. "react": "^16.7.0",
    15. "react-dom": "^16.7.0"
    16. },
    17. "devDependencies": {
    18. "@babel/core": "^7.2.2",
    19. "@babel/preset-env": "^7.2.3",
    20. "@babel/preset-react": "^7.0.0",
    21. "babel-loader": "^8.0.5",
    22. "html-loader": "^0.5.5",
    23. "html-webpack-plugin": "^3.2.0",
    24. "uglifyjs-webpack-plugin": "^2.1.1",
    25. "webpack": "^4.28.4",
    26. "webpack-cli": "^3.2.1",
    27. "webpack-dev-server": "^3.1.14"
    28. }
    29. }
    1. const path = require('path');
    2. const HtmlWebPackPlugin = require("html-webpack-plugin");
    3. module.exports = {
    4. entry: {
    5. index: './src/index.js',
    6. },
    7. output: {
    8. path: path.join(__dirname, 'dist'),
    9. filename: '[name].[hash].js',
    10. },
    11. module: {
    12. rules: [
    13. { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" },
    14. { test: /\.html$/, use: [{ loader: "html-loader" }] },
    15. ]
    16. },
    17. plugins: [
    18. new HtmlWebPackPlugin({
    19. template: "./src/index.html",
    20. filename: "index.html",
    21. }),
    22. ],
    23. devServer: {
    24. contentBase: path.join(__dirname, 'dist'),
    25. compress: true,
    26. open: true,
    27. },
    28. externals: {
    29. jquery: 'jQuery',
    30. react: 'React',
    31. 'react-dom': 'ReactDOM',
    32. },
    33. resolve: {
    34. alias: {
    35. },
    36. },
    37. };