Как включить несколько страниц в вывод WebPack?

#javascript #html #json #webpack

#javascript #HTML #json #webpack

Вопрос:

Я компилирую приложение ColdFusion с помощью WebPack, и, похоже, все компилируется просто отлично. Как вы можете видеть из приведенной ниже конфигурации, я также пытаюсь включить HTML-файл в папку dist и убедиться, что он вызывается при отображении приложения.

 const path = require("path");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const HtmlWebPackPlugin = require("html-webpack-plugin");

module.exports = {
  mode: "production",
  entry: {
    vendor: "./src/vendor.js",
    main: "./src/index.js"
  },  
  output: {
    filename: "[name].[contenthash].bundle.js",
    path: path.resolve(__dirname, "dist")
  },

  plugins: [
    new HtmlWebPackPlugin({
      template: "./src/template.cfm",
      filename: "index.cfm",
      minify: false
    }),
    new HtmlWebPackPlugin({
        template: "./src/help.html",
        filename: "help.html",
    }),  
    new CleanWebpackPlugin({
      cleanOnceBeforeBuildPatterns: ['**/*', '!application.cfc']
    })
  ],

  module: {
    rules: [
            {
                test: /.html$/,
                use: ["html-loader"],
            },      
            {
                test: /.css$/,
                use: [
                    "style-loader", //3. inject styles into dom
                    "css-loader", //2. turns css into common js
                ],
            },
            {
                test: /.scss$/,
                use: [
          "style-loader", 
          "css-loader", 
          "sass-loader"
        ],
            }
    ]
  }  
};
  

Это файл ошибки, который я получаю:

 0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\Program Files\nodejs\node.exe',
1 verbose cli   'C:\Users\jlnewnam\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js',
1 verbose cli   'start'
1 verbose cli ]
2 info using npm@6.14.8
3 info using node@v12.18.4
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle create-webpack-app@1.0.0~prestart: create-webpack-app@1.0.0
6 info lifecycle create-webpack-app@1.0.0~start: create-webpack-app@1.0.0
7 verbose lifecycle create-webpack-app@1.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle create-webpack-app@1.0.0~start: PATH: C:UsersjlnewnamAppDataRoamingnpmnode_modulesnpmnode_modulesnpm-lifecyclenode-gyp-bin;V:AppHomewwwrootjaredstudio_webpacknode_modules.bin;C:Program FilesGitmingw64bin;C:Program FilesGitusrbin;C:Usersjlnewnambin;C:Program Files (x86)Common FilesOracleJavajavapath;C:ProgramDataOracleJavajavapath;C:Program FilesPython36Scripts;C:Program FilesPython36;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:WINDOWSSystem32OpenSSH;C:Program FilesPuTTY;C:Program Files (x86)Microsoft SQL Server150DTSBinn;%JAVA_HOME%;C:Program FilesGitcmd;C:Program FilesMicrosoft SQL Server130ToolsBinn;C:Program FilesMicrosoft SQL ServerClient SDKODBC170ToolsBinn;C:Program Filesnodejs;C:Program Filesdotnet;C:UsersjlnewnamAppDataLocalMicrosoftWindowsApps;C:UsersjlnewnamAppDataLocalProgramsMicrosoft VS Codebin;C:UsersjlnewnamAppDataLocalProgramsMicrosoft VS Code Insidersbin;%JAVA_HOME%;C:UsersjlnewnamAppDataRoamingnpm;C:Program Files (x86)GitHub CLI;C:Usersjlnewnam.dotnettools
9 verbose lifecycle create-webpack-app@1.0.0~start: CWD: V:AppHomewwwrootjaredstudio_webpack
10 silly lifecycle create-webpack-app@1.0.0~start: Args: [ '/d /s /c', 'webpack --config webpack.dev.js' ]
11 silly lifecycle create-webpack-app@1.0.0~start: Returned: code: 1  signal: null
12 info lifecycle create-webpack-app@1.0.0~start: Failed to exec start script
13 verbose stack Error: create-webpack-app@1.0.0 start: `webpack --config webpack.dev.js`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:UsersjlnewnamAppDataRoamingnpmnode_modulesnpmnode_modulesnpm-lifecycleindex.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:315:20)
13 verbose stack     at ChildProcess.<anonymous> (C:UsersjlnewnamAppDataRoamingnpmnode_modulesnpmnode_modulesnpm-lifecyclelibspawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:315:20)
13 verbose stack     at maybeClose (internal/child_process.js:1021:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid create-webpack-app@1.0.0
15 verbose cwd V:AppHomewwwrootjaredstudio_webpack
16 verbose Windows_NT 10.0.18363
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Users\jlnewnam\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js" "start"
18 verbose node v12.18.4
19 verbose npm  v6.14.8
20 error code ELIFECYCLE
21 error errno 1
22 error create-webpack-app@1.0.0 start: `webpack --config webpack.dev.js`
22 error Exit status 1
23 error Failed at the create-webpack-app@1.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
  

Комментарии:

1. Не уверен, чего вы действительно хотите?

2. @tmhao2005 — Я обновил описание операции. Я также добавил в свойства HtmlWebpackPlugin HTML-файл, который я пытаюсь включить.

3. Ваша конфигурация выглядит нормально. Разве это не работает сейчас?

4. Я обновил OP с помощью журнала отладки.

5. Похоже, вам не удалось запустить свой скрипт, что означает, что он не связан с конфигурацией, поэтому вам может потребоваться переустановить deps снова

Ответ №1:

Как прокомментировано здесь:

 module.exports = {

  entry: {
    index: './src/index.js'
  },

  // ...

  plugins: [
    new HtmlWebpackPlugin({
        template: './src/index.html',
        inject: true,
        chunks: ['index'],
        filename: 'index.html'
    }),
  ]
};
  

Выше мы повторно index.js используем file на каждой странице, chunks: [‘index’] чтобы изменить это, просто добавьте новые файлы Javascript about.js
contacts.js , затем используйте их в конфигурации ввода и ссылайтесь на них в
HtmlWebpackPlugin параметрах конфигурации:

 //...
entry: {
    index: './src/index.js',
    about: './src/about.js', 
    contacts: './src/contacts.js'
},
//...
plugins: [
  new HtmlWebpackPlugin({
      template: './src/about.html',
      inject: true,
      chunks: ['about'],
      filename: 'about.html'
  }),
  

Итак, вам нужно объявить в entry используемых фрагментах plugins .