Pengenalan Dengusan
Grunt ialah alat pembinaan berdasarkan js dan node.js Memandangkan node.js telah menjadi semakin popular dalam tempoh ini, grunt mempunyai sokongan komuniti sumber terbuka yang kaya dan telah menghasilkan banyak pemalam. . Terdapat juga beberapa pemalam yang bertaburan dalam komuniti nod. Pembinaan ialah ungkapan yang luas Pemahaman tradisional ialah penyusunan, pembungkusan dan penyalinan Kini, apabila teknologi semakin meluas, pembinaan juga termasuk prapemprosesan komponen bahagian hadapan, seperti prapemprosesan sass dan kurang menjadi css, css. , dan js. Pemampatan dan penggabungan. Pemalam grunt boleh menyokong konsep bangunan baharu ini dengan sangat baik, dan lebih sesuai untuk projek yang dibina dengan teknologi sumber terbuka. Walaupun Grunt lebih banyak digunakan untuk pembinaan program, pada dasarnya Grunt ialah alat menjalankan tugas yang digunakan untuk menyelesaikan tugasan yang berulang.
Bermula dengan Grunt
Pasang
Muat turun dan pasang Node.js. Alamat muat turun
Semak pemasangan dan lihat versi:
node -v
v0.10.25
Pasang alat baris arahan grunt grunt-cli dan gunakan -g untuk memasangnya secara global supaya ia boleh digunakan dalam mana-mana direktori. Perintah berikut akan menambah grunt pada laluan carian sistem anda, jadi anda boleh menggunakan arahan ini dalam mana-mana direktori.
npm install -g grunt-cli
Perlu diambil perhatian bahawa di bawah linux atau mac, ralat tanpa kebenaran kadangkala akan dilaporkan Dalam kes ini, sudo mesti ditambahkan di hadapan
sudo npm install grunt-cli -g
Lihat versi:
grunt –version
grunt-cli v0.1.13
Nyahpasang. Jika anda telah memasang Grunt secara global sebelum ini, alih keluarnya dahulu.
npm uninstall -g grunt
grunt-cli hanyalah antara muka baris arahan grunt, yang memerlukan penggunaan grunt dan pemalamnya Modul grunt itu sendiri mesti dipasang dalam laluan projek (biasanya direktori akar projek), yang memerlukan palam-. dalam modul. Apabila arahan grunt dilaksanakan, ia akan mencari grunt yang dipasang secara setempat melalui arahan nodejs require. Disebabkan ini, anda boleh menjalankan arahan grunt dalam mana-mana subdirektori. Jika cli menjumpai grunt yang dipasang secara tempatan, ia akan memuatkan perpustakaan grunt, menggunakan konfigurasi yang anda tulis dalam GruntFile, dan kemudian melaksanakan tugas yang sepadan.
Fail konfigurasi
pakej.json
package.json digunakan untuk menyimpan modul nod yang dipasang dan diperlukan dalam direktori semasa, contohnya:
{ "name": "my-project-name", "version": "0.1.0", "author": "Your Name", "devDependencies": { "grunt": "~0.4.1" } }
Anda boleh mencipta fail ini secara manual atau melalui arahan npm init dan ikut gesaan untuk menyelesaikan penciptaan fail package.json. Jika anda mencipta package.json secara manual, cuma muat turun dan pasang modul yang diperlukan melalui pemasangan npm. Apabila modul dipasang, ia akan disimpan dalam direktori node_modules.
Jika anda ingin menambah modul yang diperlukan kemudian, gunakan arahan berikut untuk mengemas kini fail package.json secara serentak
npm install <module> --save-dev
Gruntfile.js
Status fail ini sama seperti Makefile. Ia adalah fail yang memandu grunt untuk melaksanakan tugasan. Ia perlu mengkonfigurasi parameter yang diperlukan oleh setiap modul pemalam, memuatkan pemalam dan menentukan tugas. Untuk mendapatkan maklumat lanjut tentang Gruntfile, sila rujuk di sini. Adalah disyorkan bahawa pembaca mempunyai pemahaman keseluruhan tentang Gruntfile sebelum meneruskan.
Membina ASP.NET MVC dengan Grunt
MSbuild
Sebelum menggunakan grunt untuk membina projek .NET, anda mesti terlebih dahulu memahami MSbuild. MSBuild ialah alat Microsoft untuk membina program Pada masa ini, Visual Studio telah menggunakan MSbuild sepenuhnya untuk menyusun projek. MSbuild terdiri daripada alat msbuild, satu set program pengkompil atau pembina, dan fail xml. Malah, fail projek .sln dan .csproj dalam Visual Studio ialah xml yang msbuild boleh kenali (selepas ini dirujuk sebagai fail konfigurasi msbuild Visual Studio melengkapkan kerja binaan dengan memanggil msbuild, dan msbuild mengiktiraf parameter dan pengecam tingkah laku bina). . Kita juga boleh memanggil msbuild diri kita melalui baris arahan.
Terdapat dua konsep utama dalam msbuild: Tugas dan Harta. Tugas ialah titik masuk untuk msbuild untuk dilaksanakan secara langsung sebagai sasaran Apabila melaksanakan msbuild, ia mesti menghala ke Tugasan lalai, jika tidak, anda mesti menentukan sasaran Tugasan. Harta ialah pembolehubah Sama seperti pembolehubah dalam atur cara boleh mempengaruhi pelaksanaan program, Harta boleh mempengaruhi gelagat binaan.
Fail konfigurasi msbuild yang dijana oleh VisualStudio sebenarnya sangat rumit Di permukaan, hanya terdapat beberapa pautan naik Walau bagaimanapun, ia mengimport beberapa fail konfigurasi yang telah ditetapkan ke dalam fail semasa melalui import, menjadikannya mustahil untuk melihat konfigurasi lengkap. fail. Cari item Tugas utama. Nasib baik, terdapat alat yang boleh digunakan untuk membantu menganalisis struktur fail konfigurasi msbuild.
Selain itu, apabila memanggil msbuild, anda boleh mengatasi sifat dan tugas lalai melalui parameter baris arahan Contohnya, panggilan berikut menunjukkan bahawa Tugasan "Bina Semula" digunakan sebagai sasaran dan atribut Konfigurasi ditetapkan kepada Nyahpepijat.
msbuild ConsoleApplication1.csproj /target:Rebuild /property:Configuration=Debug
更多关于msbuild,请参考微软的文档
手动使用msbuild代替VisualStudio
以发布到本机为例,经过笔者在VS2012下的环境中测试,使用VS在调用msbuild时使用了如下关键的参数覆盖:
关键的任务:
至此,我们已经可以使用msbuild命令行来代替VS的一些构建动作了。由于本篇的重点是grunt,读者可以参见微软的说明,自己试验一下:
PS: MSbuild通常位于类似这样的目录下:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
使用grunt-msbuild调用msbuild
终于到了介绍本文的主角了:grunt-msbuild。这是一个个人开发的msbuild调用中间件。作为grunt的插件,经过笔者亲测,完全可以使用。结合其他的grunt插件,简化了笔者发布项目的过程。
你可以像下面这样将这个插件添加进项目的Gruntfile,实现自动发布:
msbuild: { fontend: { src: ['Web.FontEnd/Web.FontEnd.csproj'], options: { projectConfiguration: 'Release', targets: ['WebPublish'], stdout: true, maxCpuCount: 4, buildParameters: { WarningLevel: 2, VisualStudioVersion: "11.0", DeleteExistingFiles: 'True', WebPublishMethod: 'FileSystem', publishUrl: [font_pwd] }, verbosity: 'quiet' } } }
上面的代码实现了,将Web.FontEnd.csproj项目在Release模式下通过FileSystem发布方式发布到font_pwd变量指代的目录下。 这里需要注意的是,可能需要根据自己的VS版本修改VisualStudioVersion参数,可以通过查看类似如下目录:C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0来检查。font_pwd是一个js变量,根据需要进行调整。
Grunt的完整配置就不给出了,主要是要知道这几个关键的参数设置。
在实际使用过程中DeleteExistingFiles这个参数似乎不起作用,所以可能需要另外再包含清空目标文件夹的任务。下面是实际任务运行时的部分截图: