5

Dưới đây là cấu hình webpack của tôi:html-webpack-plugin không tiêm js nộp vào index.html khi sử dụng webpack-dev-server

var path = require('path'); 
var webpack = require('webpack') 
var HtmlWebpackPlugin = require('html-webpack-plugin') 
var fs = require('fs'),buildPath='./dist/'; 
var folder_exists = fs.existsSync(buildPath); 

if(folder_exists == true) 
{ 
    require('shelljs/global') 
    rm('-rf', 'dist') 

}; 

module.exports = { 

    entry: './src/main', 

    output: { 
     path: path.join(__dirname, './dist'), 

     filename: '[name].js', 

     publicPath: '/dist/' 

    }, 


    devServer: { 
     historyApiFallback: true, 
     hot: false, 
     inline: true, 
     grogress: true, 
    }, 
    // "vue-hot-reload-api": "^1.2.2", 

    module: { 

     loaders: [ 

      { test: /\.vue$/, loader: 'vue' }, 

      { test: /\.js$/, loader: 'babel', exclude: /node_modules/ }, 

      { test: /\.css$/, loader: 'style-loader!css-loader'}, 

     //install css-loader style-loader sass-loader node-sass --save-dev 
      { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, 

      { test: /\.(png|jpg|gif)$/, loader: 'url-loader?limit=8192&name=images/[name].[ext]'}, 

      { test: /\.(html|tpl)$/, loader: 'html-loader' }, 
     ] 
    }, 

    vue: { 
     loaders: { 
      js:'babel', 
      css: 'style-loader!css-loader', 
      sass:'style!css!sass?sourceMap' 
     } 
    }, 

    babel: { 
     presets: ['es2015'], 
     plugins: ['transform-runtime'] 
    }, 
    plugins:[ 
     new HtmlWebpackPlugin({ 
     template: 'index.html', 
     filename: './index.html', 
     inject:true 
     }), 
    ], 
    resolve: { 

     extensions: ['', '.js', '.vue'], 

     alias: { 
      filter: path.join(__dirname, './src/filters'), 
      components: path.join(__dirname, './src/components') 
     } 
    }, 

    devtool: 'eval-source-map' 
}; 

Và trong package.json:

"scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "webpack-dev-server --inline", 
    "build": "webpack --config webpack.config.prod.js" 
    }, 

Khi Tôi chạy npm bắt đầu, trong localhost file js không được tiêm trong index.html. Nếu tôi chạy webpack hoặc npm run build, tệp js được tiêm thành công. Có thể html-webpack-plugin cũng đưa tệp js vào index.html khi tôi đang ở trong máy chủ cục bộ không?

Trả lời

0

Bạn có thể thử cấu hình như thế này ..

new HtmlWebpackPlugin({ 
     filename: 'index.html', 
     template: 'index.html', 
     inject: true 
    }) 

và index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="x-ua-compatible" content="ie=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
    <title>My App</title> 
</head> 
<body> 
<div id="app"></div> 
<!-- built files will be auto injected --> 
</body> 
</html> 

Bạn sẽ cần phải cài đặt npm i -D html-webpack-plugin vue-loader vue-html-loader

nhưng tôi khuyên bạn nên tạo một dự án từ mẫu , vue init webpack

Bản mẫu này dùng html-webpack-plugin

6

Vấn đề này có liên quan cụ thể đến thực tế là webpack-phát triển-server không có khả năng viết các tập tin để hệ thống tập tin địa phương của bạn và thay vào đó viết của mình tệp thành MEMORY Chỉ.

Đây là lý do tại sao bạn đã có thể tạo ra đúng file wth Html-Webpack-Plugin khi bạn chạy mặc định webpack build lệnh (KHÔNG các WDS/Webpack-Phát triển-Server) với:

webpack 

luân phiên kể từ khi bạn đang sử dụng vue.js Webpack-đơn giản dự án (https://github.com/vuejs-templates/webpack-simple/tree/master/template), bạn cũng có thể sử dụng các kịch bản NPM đi kèm với các mẫu vue.js (nằm bên trong package.json của bạn) qua:

npm run build 

Trong cả hai trường hợp, các tập tin được ghi vào thư mục như bạn nghĩ từ khi xây dựng bằng webpack CÓ THỂ ghi hệ thống tập tin, khi không có tệp nào được viết khi sử dụng Webpack-Development-Server (lại không hoạt động vì WDS ghi vào bộ nhớ chứ không phải hệ thống tệp cục bộ).

Tôi vấp vào câu trả lời này khi làm việc trên các vấn đề cùng nhờ vào nhận xét của bạn:.

"Nếu tôi chạy webpack hoặc NPM chạy xây dựng, các tập tin js được tiêm thành công có thể html-webpack-plugin cũng chèn tệp js vào index.html khi tôi đang ở trong localhost?"

Tóm lại: Html-Webpack-Plugin SẼ KHÔNG ghi tập tin vào hệ thống tập tin địa phương khi nó được sử dụng như một phần của Webpack-Phát triển-Server (WDS) mặc dù Html-Webpack -Plugin SẼ file ghi (với một cấu hình webpack giống hệt nhau) khi sử dụng bình thường webpack quá trình xây dựng (không WDS).

+0

Sẽ https://github.com/jantimon/html-webpack-harddisk-plugin giúp đỡ ? – jantimon

+0

Cảm ơn @jantimon trường hợp sử dụng của tôi là khá chuyên biệt kể từ khi tôi chạy tất cả mọi thứ bên trong container docker (webpack vv vv). đang sử dụng webpack để xây dựng dự án Vuejs của tôi mà không cần phải cài đặt nút vv trên môi trường cục bộ của tôi. Tôi đã không thử các plugin như vấn đề của tôi đã kết thúc nói chung là một vấn đề khái niệm về những gì tôi mong đợi từ WDS vv – Necevil

Các vấn đề liên quan