Saya mencoba untuk mengotomatisasi aset masuk ke / dist. Saya memiliki config.js berikut:
module.exports = {
context: __dirname + "/lib",
entry: {
main: [
"./baa.ts"
]
},
output: {
path: __dirname + "/dist",
filename: "foo.js"
},
devtool: "source-map",
module: {
loaders: [
{
test: /\.ts$/,
loader: 'awesome-typescript-loader'
},
{ test: /\.css$/, loader: "style-loader!css-loader" }
]
},
resolve: {
// you can now require('file') instead of require('file.js')
extensions: ['', '.js', '.json']
}
}
Saya juga ingin memasukkan main.html dari direktori yang berada di sebelah / lib, ke folder / dist ketika menjalankan webpack. Bagaimana saya bisa melakukan ini?
UPDATE 1 2017_____________
Cara favorit saya untuk melakukan ini sekarang adalah dengan menggunakan html-webpack-plugin
file templat. Terima kasih atas jawaban yang diterima juga! Keuntungan dari cara ini adalah bahwa file indeks juga akan memiliki tautan js cachbusted yang ditambahkan di luar kotak!
-loader
suffix. misalnyarequire('file-loader?name=[name].[ext]!../index.html');
{ test: /index\.html/, loader: 'file-loader', query: { name: '[name].[ext]' }
keloaders
array Anda di file konfigurasi webpack Anda, hanya saja saya tidak bisa mendapatkan webpack-dev-server untuk melayani itu, yang mengarah ke, cukup lucu, permintaan 404/
(root tidak ada !).Saya akan menambahkan opsi untuk jawaban VitalyB:
Opsi 3
Via npm. Jika Anda menjalankan perintah Anda melalui npm, maka Anda dapat menambahkan pengaturan ini ke package.json Anda (lihat juga webpack.config.js di sana juga). Untuk mengembangkan proses
npm start
, tidak perlu menyalin index.html dalam hal ini karena server web akan dijalankan dari direktori file sumber, dan bundle.js akan tersedia dari tempat yang sama (bundle.js hanya akan hidup di memori tetapi akan tersedia seolah-olah itu terletak bersama dengan index.html). Untuk menjalankan produksinpm run build
dan folder dist akan berisi bundle.js dan index.html Anda disalin dengan cp-command lama yang baik, seperti yang Anda lihat di bawah:Pembaruan: Opsi 4
Ada copy-webpack-plugin , seperti yang dijelaskan dalam jawaban Stackoverflow ini
Tetapi secara umum, kecuali untuk file "pertama" (seperti index.html) dan aset yang lebih besar (seperti gambar atau video besar), sertakan css, html, gambar, dan sebagainya langsung di aplikasi Anda melalui
require
dan webpack akan memasukkannya untuk Anda (yah, setelah Anda mengaturnya dengan benar dengan loader dan mungkin plugins).sumber
Anda bisa menggunakan CopyWebpackPlugin . Ini berfungsi seperti ini:
sumber
package.json
hanya digunakan untuk hal-hal sederhana seperti memulai test runner atau server dev.Saya akan mengatakan jawabannya adalah: Anda tidak bisa. (atau setidaknya: Anda tidak seharusnya). Ini bukan apa yang seharusnya dilakukan Webpack. Webpack adalah bundler, dan tidak boleh digunakan untuk tugas lain (dalam hal ini: menyalin file statis adalah tugas lain). Anda harus menggunakan alat seperti Grunt atau Gulp untuk melakukan tugas seperti itu. Sangat umum untuk mengintegrasikan Webpack sebagai tugas Grunt atau sebagai tugas Gulp . Keduanya memiliki tugas lain yang berguna untuk menyalin file seperti yang Anda gambarkan, misalnya, grunt-contrib-copy atau gulp-copy .
Untuk aset lain (bukan aset
index.html
), Anda dapat menggabungkannya dengan Webpack (itulah tujuan dari Webpack). Sebagai contohvar image = require('assets/my_image.png');
,. Tapi saya berasumsiindex.html
kebutuhan Anda untuk tidak menjadi bagian dari bundel, dan karenanya itu bukan pekerjaan untuk bundler.sumber
file-loader
yang pada dasarnya hanya salinan file / gambar ke direktori output dan memberikan url ketika Anda membutuhkan itu:var url = require('myFile');
. Seperti yang saya katakan, sebuah bundel dapat berupa satu atau beberapa file.Anda dapat menambahkan indeks secara langsung ke konfigurasi entri Anda dan menggunakan pemuat file untuk memuatnya
sumber
Untuk menyalin
index.html
file yang sudah ada kedist
direktori Anda cukup menggunakan HtmlWebpackPlugin dengan menentukan sumberindex.html
sebagai templat .File yang dibuat
dist/index.html
pada dasarnya akan sama dengan file sumber Anda dengan perbedaan sumber daya yang dibundel seperti file .js disuntikkan dengan<script>
tag oleh webpack. Minifikasi dan opsi lebih lanjut dapat dikonfigurasi dan didokumentasikan di github .sumber
Ini bekerja dengan baik di Windows:
npm install --save-dev copyfiles
package.json
Saya punya tugas salin:"copy": "copyfiles -u 1 ./app/index.html ./deploy"
Ini memindahkan index.html saya dari folder aplikasi ke folder deploy.
sumber
Untuk memperluas jawaban @ hobbeshunter jika Anda ingin hanya mengambil index.html Anda juga dapat menggunakan CopyPlugin, Motivasi utama untuk menggunakan metode ini dibandingkan menggunakan paket lain adalah karena merupakan mimpi buruk untuk menambahkan banyak paket untuk setiap jenis tunggal dan mengonfigurasinya dll. Cara termudah adalah dengan menggunakan CopyPlugin untuk semuanya:
Kemudian
Seperti yang Anda lihat, salin seluruh folder statis beserta semua kontennya ke folder dist. Tidak perlu css atau file atau plugin lain apa pun.
Meskipun metode ini tidak cocok untuk semuanya, itu akan menyelesaikan pekerjaan dengan mudah & cepat.
sumber
Saya juga menemukan mudah dan cukup generik untuk menempatkan saya
index.html
berkas didist/
direktori dan menambahkan<script src='main.js'></script>
untukindex.html
menyertakan file Webpack dibundel saya.main.js
tampaknya merupakan nama keluaran default dari bundel kami jika tidak ada yang lain yang ditentukan dalam file conf webpack . Saya kira itu bukan solusi yang baik dan jangka panjang, tapi saya harap ini bisa membantu untuk memahami cara kerja webpack .sumber