Laravel Elixir是一個API,該API整合了Gulp,為編譯Laravel專案中的Less、Sass、CoffeeScript以及處理許多其他日常任務提供了一個簡單的解決方案,從而減少編寫上述繁瑣任務的時間,有效提高程式效率。
本教學操作環境:windows7系統、Laravel8.5版、Dell G3電腦。
Laravel的宗旨是讓PHP開發變得輕鬆愉悅,所以從Laravel 5開始,提供了一個新的被稱為LaravelElixir的API。此API整合了Gulp,為編譯Laravel專案中的Less、Sass、CoffeeScript以及處理許多其他日常任務提供了一個簡單的解決方案,從而減少編寫上述繁瑣任務的時間,有效提高程式效率。
Laravel Elixir 提供了簡潔流暢的 API,讓你能夠在你的 Laravel 應用程式中定義基本的 Gulp 任務。 Elixir 支援許多常見的 CSS 與 JavaScrtip 預處理器,甚至包含了測試工具。使用鍊式調用,Elixir 讓你流暢地定義開發流程,例如:
elixir(function(mix) { mix.sass('app.scss') .coffee('app.coffee'); });
如果你曾經對於上手Gulp 及編譯資源文件感到困惑,那麼你將會愛上Laravel Elixir ,不過Laravel 不會強迫你使用Elixir,你可以自由的選用你喜歡的自動化開發流程工具。
安裝與設定
#安裝Node
在開始使用Elixir 之前,你必須先確定你的機器上有安裝Node.js。
node -v
預設情況下,Laravel Homestead 會包含你所需的一切;但是,如果你沒有使用Vagrant,那麼你可以簡單的瀏覽Node 的下載頁面(http://nodejs.org/download/) 進行安裝。 【相關推薦:laravel影片教學】
Gulp
##接著,你需要全域安裝Gulp(http: //gulpjs.com)的NPM 擴充包:
npm install --global gulp
#Laravel Elixir
最後的步驟就是安裝Elixir!在每一份新安裝的 Laravel 程式碼裡,你會發現根目錄有個名為 package.json
的檔案。想像它就像你的 composer.json
文件,只不過它定義的是 Node 的依賴擴充包,而不是 PHP 的。你可以使用以下的命令安裝依賴擴充包:
npm install
如果你是在Windows 系統上或在Windows 主機系統上執行VM 進行開發,你需要在執行npm install
指令時將--no-bin-links
開啟:
npm install --no-bin-links
執行Elixir
Elixir 是創建於Gulp 之上,所以要執行你的Elixir 任務,只需要在命令列執行
gulp
--production 標示會告知Elixir 壓縮你的CSS 及JavaScript 檔案:
監控資源檔案修改
因為每次修改你的資源檔案之後在命令列執行
gulp 指令會相當不便,因此你可以使用
gulp watch 指令。此命令會在你的命令列運行並監控資源檔案的任何修改。當修改發生時,新檔案將會自動被編譯:
gulp watch使用樣式
Less
elixir(function(mix) { mix.less('app.less'); });######你可能會想要合併多個Less 檔案至單一CSS 檔案。同樣的,產生的CSS 會被放置在###public/css/app.css###:######
elixir(function(mix) { mix.less([ 'app.less', 'controllers.less' ]); });######如果你想自訂編譯後的CSS 輸出位置,可以將第二個參數傳遞至###less### 方法:######
elixir(function(mix) { mix.less('app.less', 'public/stylesheets'); }); // 指定输出的文件名称... elixir(function(mix) { mix.less('app.less', 'public/stylesheets/style.css'); });###
Sass
sass
方法让你能编译 Sass 至 CSS。Sass 文件的默认读取路径是 resources/assets/sass
,你可以使用此方法:
elixir(function(mix) { mix.sass('app.scss'); });
同样的,如同 less
方法,你可以编译多个 Sass 文件至单个的 CSS 文件,甚至可以自定义生成的 CSS 的输出目录:
elixir(function(mix) { mix.sass([ 'app.scss', 'controllers.scss' ], 'public/assets/css'); });
纯 CSS
如果你只是想将一些纯 CSS 样式合并成单个的文件,你可以使用 styles
方法。此方法的默认路径为 resources/assets/css
目录,而生成的 CSS 会被放置于 public/css/all.css
:
elixir(function(mix) { mix.styles([ 'normalize.css', 'main.css' ]); });
当然,你也可以通过传递第二个参数至 styles
方法,将生成的文件输出至指定的位置:
elixir(function(mix) { mix.styles([ 'normalize.css', 'main.css' ], 'public/assets/css'); });
Source Maps
Source maps 在默认情况下是开启的。因此,针对每个被编译的文件,同目录内都会伴随着一个 *.css.map
文件。这个文件能够让你在浏览器调试时,可以追踪编译后的样式选择器至原始的 Sass 或 Less 位置。
如果你不想为你的 CSS 生成 source maps,你可以使用一个简单的配置选项关闭它们:
elixir.config.sourcemaps = false; elixir(function(mix) { mix.sass('app.scss'); });
使用脚本
Elixir 也提供了一些函数来帮助你使用 JavaScript 文件,像是编译 ECMAScript 6、编译 CoffeeScript、Browserify、压缩、及简单的串联纯 JavaScript 文件。
CoffeeScript
coffee
方法可以用于编译 CoffeeScript 至纯 JavaScript。coffee
函数接收一个相对于 resources/assets/coffee
目录的 CoffeeScript 文件名字符串或数组,接着在 public/js
目录生成单个的 app.js
文件:
elixir(function(mix) { mix.coffee(['app.coffee', 'controllers.coffee']); });
Browserify
Elixir 还附带了一个 browserify
方法,给予你在浏览器引入模块及 ECMAScript 6 的有用的特性。
此任务假设你的脚本都保存在 resources/assets/js
,并会将生成的文件放置于 public/js/main.js
:
elixir(function(mix) { mix.browserify('main.js'); });
虽然 Browserify 附带了 Partialify 及 Babelify 转换器,但是只要你愿意,你可以随意安装并增加更多的转换器:
npm install aliasify --save-dev
elixir.config.js.browserify.transformers.push({ name: 'aliasify', options: {} }); elixir(function(mix) { mix.browserify('main.js'); });
Babel
babel
方法可被用于编译 ECMAScript 6 与 7 至纯 JavaScript。此函数接收一个相对于 resources/assets/js
目录的文件数组,接着在 public/js
目录生成单个的 all.js
文件:
elixir(function(mix) { mix.babel([ 'order.js', 'product.js' ]); });
若要选择不同的输出位置,只需简单的指定你希望的路径作为第二个参数。该方法除了 Babel 的编译外,特色与功能同等于 mix.scripts()
。
Scripts
如果你想将多个 JavaScript 文件合并至单个文件,你可以使用 scripts
方法。
scripts
方法假设所有的路径都相对于 resources/assets/js
目录,且默认会将生成的 JavaScript 放置于 public/js/all.js
:
elixir(function(mix) { mix.scripts([ 'jquery.js', 'app.js' ]); });
如果你想多个脚本的集合合并成不同文件,你可以使用调用多个 scripts
方法。给予该方法的第二个参数会为每个串联决定生成的文件名称:
elixir(function(mix) { mix.scripts(['app.js', 'controllers.js'], 'public/js/app.js') .scripts(['forum.js', 'threads.js'], 'public/js/forum.js'); });
如果你想合并指定目录中的所有脚本,你可以使用 scriptsIn
方法。生成的 JavaScript 会被放置在 public/js/all.js
:
elixir(function(mix) { mix.scriptsIn('public/js/some/directory'); });
复制文件与目录
copy
方法可以复制文件与目录至新位置。所有操作路径都相对于项目的根目录:
elixir(function(mix) { mix.copy('vendor/foo/bar.css', 'public/css/bar.css'); }); elixir(function(mix) { mix.copy('vendor/package/views', 'resources/views'); });
版本与缓存清除
许多的开发者会在它们编译后的资源文件中加上时间戳或是唯一的 token,强迫浏览器加载全新的资源文件以取代提供的旧版本代码副本。你可以使用 version
方法让 Elixir 处理它们。
version
方法接收一个相对于 public
目录的文件名称,接着为你的文件名称加上唯一的哈希值,以防止文件被缓存。举例来说,生成出来的文件名称可能像这样:all-16d570a7.css
:
elixir(function(mix) { mix.version('css/all.css'); });
在为文件生成版本之后,你可以在你的 视图 中使用 Laravel 的全局 elixir
PHP 辅助函数来正确加载名称被哈希后的文件。elixir
函数会自动判断被哈希的文件名称:
<link rel="stylesheet" href="{{ elixir('css/all.css') }}">
为多个文件生成版本
你可以传递一个数组至 version
方法来为多个文件生成版本:
elixir(function(mix) { mix.version(['css/all.css', 'js/app.js']); });
一旦该文件被加上版本,你需要使用 elixir
辅助函数来生成哈希文件的正确链接。切记,你只需要传递未哈希文件的名称至 elixir
辅助函数。此函数会自动使用未哈希的名称来判断该文件为目前的哈希版本:
<link rel="stylesheet" href="{{ elixir('css/all.css') }}">
BrowserSync
当你对前端资源进行修改后,BrowserSync 会自动刷新你的网页浏览器。你可以使用 browserSync
方法来告知 Elixir,当你运行 gulp watch
命令时启动 BrowserSync 服务器:
elixir(function(mix) { mix.browserSync(); });
一旦你运行 gulp watch
,就能使用连接端口 3000 启用浏览器同步并访问你的网页应用程序:http://homestead.app:3000
。如果你在本机开发所使用的域名不是 homestead.app
,那么你可以传递一个 选项 的数组作为 browserSync
方法的第一个参数:
elixir(function(mix) { mix.browserSync({ proxy: 'project.app' }); });
调用既有的 Gulp 任务
如果你需要在 Elixir 调用一个既有的 Gulp 任务,你可以使用 task
方法。举个例子,假设你有一个 Gulp 任务,当你调用时会输出一些简单的文本:
gulp.task('speak', function() { var message = 'Tea...Earl Grey...Hot'; gulp.src('').pipe(shell('say ' + message)); });
如果你希望在 Elixir 中调用这个任务,使用 mix.task
方法并传递该任务的名称作为该方法唯一的参数:
elixir(function(mix) { mix.task('speak'); });
自定义监控器
如果你想注册一个监控器让你的自定义任务能在每次文件改变时就运行,只需传递一个正则表达式作为 task
方法的第二个参数:
elixir(function(mix) { mix.task('speak', 'app/**/*.php'); });
编写 Elixir 扩展功能
如果你需要比 Elixir 的 task
方法更灵活的方案,你可以创建自定义的 Elixir 扩展功能。Elixir 扩展功能允许你传递参数至你的自定义任务。举例来说,你可以编写一个扩展功能,像是:
// 文件:elixir-extensions.js var gulp = require('gulp'); var shell = require('gulp-shell'); var Elixir = require('laravel-elixir'); var Task = Elixir.Task; Elixir.extend('speak', function(message) { new Task('speak', function() { return gulp.src('').pipe(shell('say ' + message)); }); }); // mix.speak('Hello World');
就是这样!注意,你的 Gulp 具体的逻辑必须被放置在 Task
第二个参数传递的构造器函数里面。你可以将此扩展功能放置在 Gulpfile 的上方,取而代之也可以导出至一个自定义任务的文件。举个例子,如果你将你的扩展功能放置在 elixir-extensions.js
文件中,那么你可以在 Gulpfile
中像这样引入该文件:
// 文件:Gulpfile.js var elixir = require('laravel-elixir'); require('./elixir-extensions') elixir(function(mix) { mix.speak('Tea, Earl Grey, Hot'); });
自定义监控器
如果你想在运行 gulp watch
时能够重新触发你的自定义任务,你可以注册一个监控器:
new Task('speak', function() { return gulp.src('').pipe(shell('say ' + message)); }) .watch('./app/**');
相关推荐:最新的五个Laravel视频教程
以上是laravel elixir是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Tocombatisolationandlonelinessinremotework,companiesshouldimplementregular,meaningfulinteractions,provideequalgrowthopportunities,andusetechnologyeffectively.1)Fostergenuineconnectionsthroughvirtualcoffeebreaksandpersonalsharing.2)Ensureremoteworkers

laravelispularfullull-stackDevelopmentBecapeitOffersAsAseAseAseAseBlendOfbackendEdpoperandPowerandForterFlexibility.1)ITSbackEndCapaPabilities,sightifyDatabaseInteractions.2)thebladeTemplatingEngingEngineAllolowsLows

選擇視頻會議平台的關鍵因素包括用戶界面、安全性和功能。 1)用戶界面應直觀,如Zoom。 2)安全性需重視,MicrosoftTeams提供端到端加密。 3)功能需匹配需求,GoogleMeet適合簡短會議,CiscoWebex提供高級協作工具。

最新版本的Laravel10與MySQL5.7及以上、PostgreSQL9.6及以上、SQLite3.8.8及以上、SQLServer2017及以上兼容。這些版本選擇是因為它們支持Laravel的ORM功能,如MySQL5.7的JSON數據類型,提升了查詢和存儲效率。

Laravelisanexcellentchoiceforfull-stackdevelopmentduetoitsrobustfeaturesandeaseofuse.1)ItsimplifiescomplextaskswithitsmodernPHPsyntaxandtoolslikeBladeforfront-endandEloquentORMforback-end.2)Laravel'secosystem,includingLaravelMixandArtisan,enhancespro

Laravel10,releasedonFebruary7,2023,isthelatestversion.Itfeatures:1)Improvederrorhandlingwithanewreportmethodintheexceptionhandler,2)EnhancedsupportforPHP8.1featureslikeenums,and3)AnewLaravel\Promptspackageforinteractivecommand-lineprompts.

thelatestlaravelververversionenhancesdevelopmentwith:1)簡化的inimpliticmodelbinding,2)增強EnhancedeloquentcapabibilitionswithNewqueryMethods和3)改善了supportorfortormodernphpfortornphpforternphpfeatureserslikenamedargenamedArgonedArgonsemandArgoctess,makecodingMoreftermeforefterMealiteFficeAndEnjoyaigaigaigaigaigaiganigaborabilyaboipaigyAndenjoyaigobyabory。

你可以在laravel.com/docs找到最新Laravel版本的發布說明。 1)發布說明提供了新功能、錯誤修復和改進的詳細信息。 2)它們包含示例和解釋,幫助理解新功能的應用。 3)注意新功能的潛在復雜性和向後兼容性問題。 4)定期審查發布說明可以保持更新並激發創新。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中