我通過html表單接收自定義的js和css腳本作爲字符串。這些字符串然後保存在文件系統上的文件中。問題是如何在每次生成/更新時縮小這些文件。我正在使用gulp和laravel仙丹。 我的第一個想法是調用exec(「gulp something」),但不知道如何配置gulp。Laravel縮小css和js文件
回答
質量要求:
第一步:(安裝插件)
minifyCss和由laravel-酏劑用於咽-醜化。您必須安裝gulp-newer通過npm install gulp-newer --save-dev
。
第二步:(定義任務)
您需要定義CSS和JS不同的任務。
CSS任務
gulp.task('cssTask', function() {
return gulp.src(cssSrc)
.pipe(newer(cssDest))//compares the css source and css destination(css files)
.pipe(minifyCss())//minify css
.pipe(gulp.dest(cssDest));//save minified css in destination directory
});
JS任務
gulp.task('jsTask', function() {
return gulp.src(jsSrc)
.pipe(newer(jsDest))//compares the js source and js destination(js files)
.pipe(uglify())//minify js
.pipe(gulp.dest(jsDest));//save minified js in destination directory
});
第三步:(定義自定義觀看)
你應該有一個手錶的任務,觀看您的源目錄(cssSrc
和jsSrc
)並調用其相關任務。
gulp.task('custom', function() {//Watch task
gulp.watch(cssSrc, ['cssTask']);//watch your css source and call css task
gulp.watch(jsSrc, ['jsTask']);//watch your js source and call js task
});
第四步:(運行自定義手錶)
最後,你必須gulp custom
運行自定義任務。
結論:
每一次,當文件被添加到源目錄。 Gulp將縮小文件並將其存儲在目標目錄中。這在本地進行了測試,並且完美運行。
完成咕嘟咕嘟文件
var gulp = require('gulp');
var elixir = require('laravel-elixir');
var newer = require('gulp-newer');
var minifyCss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
cssSrc = 'cssSrc/*.css';//Your css source directory
cssDest = 'cssDest';//Your css destination directory
jsSrc = 'jsSrc/*.js';//Your js source directory
jsDest = 'jsDest';//Your js destination directory
gulp.task('cssTask', function() {
return gulp.src(cssSrc)
.pipe(newer(cssDest))//compares the css source and css destination(css files)
.pipe(minifyCss())//minify css
.pipe(gulp.dest(cssDest));//save minified css in destination directory
});
gulp.task('jsTask', function() {
return gulp.src(jsSrc)
.pipe(newer(jsDest))//compares the js source and js destination(js files)
.pipe(uglify())//minify js
.pipe(gulp.dest(jsDest));//save minified js in destination directory
});
gulp.task('custom', function() {//Watch task
gulp.watch(cssSrc, ['cssTask']);//watch your css source and call css task
gulp.watch(jsSrc, ['jsTask']);//watch your js source and call js task
});
評論後編輯:
我想是這樣的:自吞SRCFILE destFile。
對於這種情況,您需要安裝名爲yargs的新插件。
安裝:
您可以通過安裝npm install yargs --save-dev
和yargs然後你必須通過源目錄和目標目錄時自定義任務被調用。
gulp custom --cssSrc=cssSource --cssDest=cssDestination --jsSrc=jsSource --jsDest=jsDestination
例如:
gulp custom --cssSrc=cssSrc/*.css --cssDest=cssDest --jsSrc=jsSrc/*.js --jsDest=jsDest
完成的咕嘟咕嘟文件:
var gulp = require('gulp');
var elixir = require('laravel-elixir');
var newer = require('gulp-newer');
var minifyCss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var argv = require('yargs').argv;
cssSrc = argv.cssSrc;
cssDest = argv.cssDest;
jsSrc = argv.jsSrc;
jsDest = argv.jsDest;
gulp.task('cssTask', function() {
return gulp.src(cssSrc)
.pipe(newer(cssDest))
.pipe(minifyCss())
.pipe(gulp.dest(cssDest));
});
gulp.task('jsTask', function() {
return gulp.src(jsSrc)
.pipe(newer(jsDest))
.pipe(uglify())
.pipe(gulp.dest(jsDest));
});
gulp.task('custom', function() {
gulp.watch(cssSrc, ['cssTask']);
gulp.watch(jsSrc, ['jsTask']);
});
注:每一次,源目錄或目標目錄改變,一飲而盡任務必須是再次呼叫。
首先,您需要將內容存儲在新文件中。這方面的一個很好的地方是resources/assets/js
:
$jsContent = $request->get('js_custom_content');
file_put_contents(base_path('resources/assets/js/custom.js'), $jsContent);
好,一旦創建了JavaScript文件,你需要告訴仙丹再縮小自定義腳本:
// it will look for resources/assets/js/custom.js
// and it will compress the output to public/assets/js/custom.min.js
mix.scripts(['custom.js'], 'public/assets/js/custom.min.js');
需要,您可以版本吧。這意味着每次腳本的內容變化,一飲而盡會生成一個新的版本,以避免瀏覽器的緩存問題:
mix.version(['public/assets/js/custom.min.js']);
最後,加載腳本在您的視圖:
<script type="text/javascript" src="{{ url('assets/js/custom.min.js')) }}"></script>
或用版本:
<script type="text/javascript" src="{{ url(elixir('assets/js/custom.min.js')) }}"></script>
使用下面的gulp模塊。
https://www.npmjs.com/package/gulp-minify-css - 縮小所有的css文件。 https://www.npmjs.com/package/gulp-concat-css - 將你所有的CSS合併到一個文件中。 https://www.npmjs.com/package/gulp-uglify - Minigy所有的JS文件。 https://www.npmjs.com/package/gulp-sass - SASS
參考這樣的回答: Gulp minify multiple js files to one
下面是樣品咕嘟咕嘟文件片段。
var gulp = require('gulp'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
clean = require('gulp-clean'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
cache = require('gulp-cache'),
livereload = require('gulp-livereload'),
lr = require('tiny-lr'),
server = lr();
// Clean
gulp.task('clean', function() {
return gulp.src(['css', 'js', 'img'], {
read: false
})
.pipe(clean());
});
gulp.task('styles', function() {
return gulp.src('sass/styles.scss')
.pipe(sass({
style: 'expanded'
}))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
.pipe(gulp.dest('css'))
.pipe(notify({
message: 'Styles task complete'
}));
});
// Concatenate & Minify JS
gulp.task('scripts', function() {
return gulp.src('js/*.js')
.pipe(concat('all.js'))
.pipe(gulp.dest('dist'))
.pipe(rename('all.min.js'))
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
// Watch
gulp.task('watch', function() {
// Watch .scss files
gulp.watch('sass/**/*.scss', ['styles']);
// Watch .js files
gulp.watch('js/**/*.js', ['scripts']);
// Watch image files
gulp.watch('img/**/*', ['images']);
// Create LiveReload server
var server = livereload();
// Watch any files in dist/, reload on change
gulp.watch(['sass/**', 'js/**', 'img/**', '*.html']).on('change', function(file) {
server.changed(file.path);
});
});
gulp.task('default', ['styles', 'scripts', 'watch']);
雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/10591438) – Sablefoste
我同意你的觀點。讓我更新gul config snippet。但我是古怪的,問題總的來說。我不認爲它需要有片段。無論如何 –
如果鏈接改變,那麼答案可能是無用的。如果問題一般,那麼鏈接中要素的「剪切和粘貼」就可能符合要求。 – Sablefoste
- 1. 組合和縮小CSS/JS文件
- 2. 即時縮小css和js
- 3. 在Azure項目中縮小和包含js和css文件
- 4. JS和CSS文件不會壓縮
- 5. 合併和縮小多個CSS/JS文件
- 6. Combres結合JS和CSS文件,但不會縮小
- 7. 縮小/合併JS文件
- 8. VS2010自動重建縮小的.js文件/ .css文件
- 9. 通常的做法是合併和縮小外部JS庫和css文件
- 10. 通過服務器縮小/壓縮JS和CSS?
- 11. ASP.NET中的資源(JS,CSS)壓縮,縮小和版本控制
- 12. Django:在發佈前自動縮小css/js文件
- 13. 即使文件被緩存,JS/CSS縮小是否有幫助?
- 14. Laravel Elixir:如何縮小文件?
- 15. 壓縮上autoptimize CSS和JS和SVG文件
- 16. 程序的縮小CSS文件和Java腳本文件
- 17. 帶有(非)縮小的js/css文件的開發和生產工作流程
- 18. 縮小包含路由的js文件
- 19. 結合已經縮小的js文件
- 20. gzipping一個縮小的.js文件
- 21. 如何縮小所有js文件?
- 22. MVC 4 Portable Areas CSS/JS縮小版
- 23. HTML CSS JS縮小體系結構
- 24. django css和js文件
- 25. GZipping CSS和JS文件
- 26. CSS和JS文件沒裝
- 27. LESS優化與縮小CSS文件
- 28. Git和縮小文件
- 29. css文件laravel
- 30. 在laravel中添加css和js文件5.3
http://laravel.com/docs/5.1/elixir –
你可能不明白這個問題。我想通過laravel應用程序通過gulp來縮小自定義的js或css文件。 – izupet
請參考下面的答案:http:// stackoverflow。com/questions/26719884/gulp-minify-multiple-js-files-to-one並添加了幾個吞嚥模塊 –