gulp 压缩 js 文件时模块 uglify-js 出错
error with module uglify-js during gulp compression js files
我正在使用 foundationpress。并在 gulp 中构建压缩模块。当我使用 "npm start" 时,我得到了 liverealod,我的文件正在快速压缩,一切正常。但是当我需要部署我的网站时,我正在使用 "npm run package" 然后我的终端使用 uglify-js 模块抛出错误。
{ Error
at new JS_Parse_Error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1534:18)
at js_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1542:11)
at parse_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1667:9)
at Object.next_token [as input] (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1946:9)
at next (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2075:25)
at maybe_conditional (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2834:13)
at maybe_assign (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2856:20)
at expression (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2875:20)
at expr_atom (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2608:26)
at maybe_unary (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2792:19)
message: 'F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\app.js: Unexpected character \'`\'',
fileName: 'F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\app.js',
lineNumber: 105,
stack: 'Error\n at new JS_Parse_Error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1534:18)\n at js_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1542:11)\n at parse_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1667:9)\n at Object.next_token [as input] (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1946:9)\n at next (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2075:25)\n at maybe_conditional (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2834:13)\n at maybe_assign (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2856:20)\n at expression (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2875:20)\n at expr_atom (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2608:26)\n at maybe_unary (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2792:19)',
showStack: false,
showProperties: true,
plugin: 'gulp-uglify' }
[18:49:23] Version: webpack 3.10.0
Asset Size Chunks Chunk Names
app.js 1.15 MB 0 [emitted] [big] app
[18:49:41] gulp-imagemin: Minified 102 images (saved 1.6 MB - 13%)
[18:49:41] Finished 'images' after 22 s
[18:49:41] The following tasks did not complete: package, build, <parallel>, webpack:build
[18:49:41] Did you forget to signal async completion?
这是我的 gulpfile.babel.js 文件:
'use strict';
import plugins from 'gulp-load-plugins';
import yargs from 'yargs';
import browser from 'browser-sync';
import gulp from 'gulp';
import rimraf from 'rimraf';
import yaml from 'js-yaml';
import fs from 'fs';
import dateFormat from 'dateformat';
import webpackStream from 'webpack-stream';
import webpack2 from 'webpack';
import named from 'vinyl-named';
import log from 'fancy-log';
import colors from 'ansi-colors';
// Load all Gulp plugins into one variable
const $ = plugins();
// Check for --production flag
const PRODUCTION = !!(yargs.argv.production);
// Check for --development flag unminified with sourcemaps
const DEV = !!(yargs.argv.dev);
// Load settings from settings.yml
const { BROWSERSYNC, COMPATIBILITY, REVISIONING, PATHS } = loadConfig();
// Check if file exists synchronously
function checkFileExists(filepath) {
let flag = true;
try {
fs.accessSync(filepath, fs.F_OK);
} catch(e) {
flag = false;
}
return flag;
}
// Load default or custom YML config file
function loadConfig() {
log('Loading config file...');
if (checkFileExists('config.yml')) {
// config.yml exists, load it
log(colors.bold(colors.cyan('config.yml')), 'exists, loading', colors.bold(colors.cyan('config.yml')));
let ymlFile = fs.readFileSync('config.yml', 'utf8');
return yaml.load(ymlFile);
} else if(checkFileExists('config-default.yml')) {
// config-default.yml exists, load it
log(colors.bold(colors.cyan('config.yml')), 'does not exist, loading', colors.bold(colors.cyan('config-default.yml')));
let ymlFile = fs.readFileSync('config-default.yml', 'utf8');
return yaml.load(ymlFile);
} else {
// Exit if config.yml & config-default.yml do not exist
log('Exiting process, no config file exists.');
log('Error Code:', err.code);
process.exit(1);
}
}
// Delete the "dist" folder
// This happens every time a build starts
function clean(done) {
rimraf(PATHS.dist, done);
}
// Copy files out of the assets folder
// This task skips over the "images", "js", and "scss" folders, which are parsed separately
function copy() {
return gulp.src(PATHS.assets)
.pipe(gulp.dest(PATHS.dist + '/assets'));
}
// Compile Sass into CSS
// In production, the CSS is compressed
function sass() {
return gulp.src('src/assets/scss/app.scss')
.pipe($.sourcemaps.init())
.pipe($.sass({
includePaths: PATHS.sass
})
.on('error', $.sass.logError))
.pipe($.autoprefixer({
browsers: COMPATIBILITY
}))
.pipe($.if(PRODUCTION, $.cleanCss({ compatibility: 'ie9' })))
.pipe($.if(!PRODUCTION, $.sourcemaps.write()))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev()))
.pipe(gulp.dest(PATHS.dist + '/assets/css'))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev.manifest()))
.pipe(gulp.dest(PATHS.dist + '/assets/css'))
.pipe(browser.reload({ stream: true }));
}
// Combine JavaScript into one file
// In production, the file is minified
const webpack = {
config: {
module: {
rules: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules(?!\/foundation-sites)/,
},
],
},
externals: {
jquery: 'jQuery',
},
},
changeHandler(err, stats) {
log('[webpack]', stats.toString({
colors: true,
}));
browser.reload();
},
build() {
return gulp.src(PATHS.entries)
.pipe(named())
.pipe(webpackStream(webpack.config, webpack2))
.pipe($.if(PRODUCTION, $.uglify()
.on('error', e => { console.log(e); }),
))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev()))
.pipe(gulp.dest(PATHS.dist + '/assets/js'))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev.manifest()))
.pipe(gulp.dest(PATHS.dist + '/assets/js'));
},
watch() {
const watchConfig = Object.assign(webpack.config, {
watch: true,
devtool: 'inline-source-map',
});
return gulp.src(PATHS.entries)
.pipe(named())
.pipe(webpackStream(watchConfig, webpack2, webpack.changeHandler)
.on('error', (err) => {
log('[webpack:error]', err.toString({
colors: true,
}));
}),
)
.pipe(gulp.dest(PATHS.dist + '/assets/js'));
},
};
gulp.task('webpack:build', webpack.build);
gulp.task('webpack:watch', webpack.watch);
// Copy images to the "dist" folder
// In production, the images are compressed
function images() {
return gulp.src('src/assets/images/**/*')
.pipe($.if(PRODUCTION, $.imagemin({
progressive: true
})))
.pipe(gulp.dest(PATHS.dist + '/assets/images'));
}
// Create a .zip archive of the theme
function archive() {
var time = dateFormat(new Date(), "yyyy-mm-dd_HH-MM");
var pkg = JSON.parse(fs.readFileSync('./package.json'));
var title = pkg.name + '_' + time + '.zip';
return gulp.src(PATHS.package)
.pipe($.zip(title))
.pipe(gulp.dest('packaged'));
}
// PHP Code Sniffer task
gulp.task('phpcs', function() {
return gulp.src(PATHS.phpcs)
.pipe($.phpcs({
bin: 'wpcs/vendor/bin/phpcs',
standard: './codesniffer.ruleset.xml',
showSniffCode: true,
}))
.pipe($.phpcs.reporter('log'));
});
// PHP Code Beautifier task
gulp.task('phpcbf', function () {
return gulp.src(PATHS.phpcs)
.pipe($.phpcbf({
bin: 'wpcs/vendor/bin/phpcbf',
standard: './codesniffer.ruleset.xml',
warningSeverity: 0
}))
.on('error', $.util.log)
.pipe(gulp.dest('.'));
});
// Start BrowserSync to preview the site in
function server(done) {
browser.init({
proxy: BROWSERSYNC.url,
ui: {
port: 8080
},
});
done();
}
// Reload the browser with BrowserSync
function reload(done) {
browser.reload();
done();
}
// Watch for changes to static assets, pages, Sass, and JavaScript
function watch() {
gulp.watch(PATHS.assets, copy);
gulp.watch('src/assets/scss/**/*.scss', sass)
.on('change', path => log('File ' + colors.bold(colors.magenta(path)) + ' changed.'))
.on('unlink', path => log('File ' + colors.bold(colors.magenta(path)) + ' was removed.'));
gulp.watch('**/*.php', reload)
.on('change', path => log('File ' + colors.bold(colors.magenta(path)) + ' changed.'))
.on('unlink', path => log('File ' + colors.bold(colors.magenta(path)) + ' was removed.'));
gulp.watch('src/assets/images/**/*', gulp.series(images, browser.reload));
}
// Build the "dist" folder by running all of the below tasks
gulp.task('build',
gulp.series(clean, gulp.parallel(sass, 'webpack:build', images, copy)));
// Build the site, run the server, and watch for file changes
gulp.task('default',
gulp.series('build', server, gulp.parallel('webpack:watch', watch)));
// Package task
gulp.task('package',
gulp.series('build', archive));
这是我的 config.yml 文件
# Browsersync config
BROWSERSYNC:
# URL of local development server goes here (ex. http://localsite.dev)
url: "http://localhost/atmosfera/"
# Autoprefixer will make sure your CSS works with these browsers
COMPATIBILITY:
- "last 2 versions"
- "ie >= 9"
- "ios >= 7"
# Set to true if you want static asset revisioning, helpful for cache busting
REVISIONING: false
# Gulp will reference these paths when it copies files
PATHS:
# Path to dist folder
dist: "dist"
# Paths to static assets that aren't images, CSS, or JavaScript
assets:
- "src/assets/**/*"
- "!src/assets/{images,images/**/*,js,js/**/*,scss,scss/**/*}"
# Paths to Sass libraries, which can then be loaded with @import
sass:
- "node_modules/foundation-sites/scss"
- "node_modules/motion-ui/src"
# Paths to JavaScript entry points for webpack to bundle modules
entries:
- "src/assets/js/app.js"
# Paths for the package task to include/exclude in .zip archive
package:
- "**/*"
- "!**/node_modules/**"
- "!**/packaged/**"
- "!**/src/**"
- "!**/codesniffer.ruleset.xml"
- "!**/composer.json"
- "!**/composer.lock"
- "!**/config.yml"
- "!**/config.default.yml"
- "!**/gulpfile.babel.js"
- "!**/package.json"
- "!**/package-lock.json"
- "!**/webpack.config.js"
# Paths for PHP CodeSniffer
phpcs:
- "**/*.php"
- "!wpcs"
- "!wpcs/**"
因为那个问题,我无法部署我的网站。我是 node js 的新手,gulp 谁能告诉我如何解决它?
已解决https://github.com/olefredrik/FoundationPress/issues/1219#issuecomment-361344578
问题是关于 windows 个路径。
我正在使用 foundationpress。并在 gulp 中构建压缩模块。当我使用 "npm start" 时,我得到了 liverealod,我的文件正在快速压缩,一切正常。但是当我需要部署我的网站时,我正在使用 "npm run package" 然后我的终端使用 uglify-js 模块抛出错误。
{ Error
at new JS_Parse_Error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1534:18)
at js_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1542:11)
at parse_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1667:9)
at Object.next_token [as input] (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1946:9)
at next (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2075:25)
at maybe_conditional (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2834:13)
at maybe_assign (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2856:20)
at expression (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2875:20)
at expr_atom (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2608:26)
at maybe_unary (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2792:19)
message: 'F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\app.js: Unexpected character \'`\'',
fileName: 'F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\app.js',
lineNumber: 105,
stack: 'Error\n at new JS_Parse_Error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1534:18)\n at js_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1542:11)\n at parse_error (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1667:9)\n at Object.next_token [as input] (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:1946:9)\n at next (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2075:25)\n at maybe_conditional (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2834:13)\n at maybe_assign (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2856:20)\n at expression (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2875:20)\n at expr_atom (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2608:26)\n at maybe_unary (eval at <anonymous> (F:\Ampps\www\atmosfera\wp-content\themes\FoundationPress\node_modules\uglify-js\tools\node.js:28:1), <anonymous>:2792:19)',
showStack: false,
showProperties: true,
plugin: 'gulp-uglify' }
[18:49:23] Version: webpack 3.10.0
Asset Size Chunks Chunk Names
app.js 1.15 MB 0 [emitted] [big] app
[18:49:41] gulp-imagemin: Minified 102 images (saved 1.6 MB - 13%)
[18:49:41] Finished 'images' after 22 s
[18:49:41] The following tasks did not complete: package, build, <parallel>, webpack:build
[18:49:41] Did you forget to signal async completion?
这是我的 gulpfile.babel.js 文件:
'use strict';
import plugins from 'gulp-load-plugins';
import yargs from 'yargs';
import browser from 'browser-sync';
import gulp from 'gulp';
import rimraf from 'rimraf';
import yaml from 'js-yaml';
import fs from 'fs';
import dateFormat from 'dateformat';
import webpackStream from 'webpack-stream';
import webpack2 from 'webpack';
import named from 'vinyl-named';
import log from 'fancy-log';
import colors from 'ansi-colors';
// Load all Gulp plugins into one variable
const $ = plugins();
// Check for --production flag
const PRODUCTION = !!(yargs.argv.production);
// Check for --development flag unminified with sourcemaps
const DEV = !!(yargs.argv.dev);
// Load settings from settings.yml
const { BROWSERSYNC, COMPATIBILITY, REVISIONING, PATHS } = loadConfig();
// Check if file exists synchronously
function checkFileExists(filepath) {
let flag = true;
try {
fs.accessSync(filepath, fs.F_OK);
} catch(e) {
flag = false;
}
return flag;
}
// Load default or custom YML config file
function loadConfig() {
log('Loading config file...');
if (checkFileExists('config.yml')) {
// config.yml exists, load it
log(colors.bold(colors.cyan('config.yml')), 'exists, loading', colors.bold(colors.cyan('config.yml')));
let ymlFile = fs.readFileSync('config.yml', 'utf8');
return yaml.load(ymlFile);
} else if(checkFileExists('config-default.yml')) {
// config-default.yml exists, load it
log(colors.bold(colors.cyan('config.yml')), 'does not exist, loading', colors.bold(colors.cyan('config-default.yml')));
let ymlFile = fs.readFileSync('config-default.yml', 'utf8');
return yaml.load(ymlFile);
} else {
// Exit if config.yml & config-default.yml do not exist
log('Exiting process, no config file exists.');
log('Error Code:', err.code);
process.exit(1);
}
}
// Delete the "dist" folder
// This happens every time a build starts
function clean(done) {
rimraf(PATHS.dist, done);
}
// Copy files out of the assets folder
// This task skips over the "images", "js", and "scss" folders, which are parsed separately
function copy() {
return gulp.src(PATHS.assets)
.pipe(gulp.dest(PATHS.dist + '/assets'));
}
// Compile Sass into CSS
// In production, the CSS is compressed
function sass() {
return gulp.src('src/assets/scss/app.scss')
.pipe($.sourcemaps.init())
.pipe($.sass({
includePaths: PATHS.sass
})
.on('error', $.sass.logError))
.pipe($.autoprefixer({
browsers: COMPATIBILITY
}))
.pipe($.if(PRODUCTION, $.cleanCss({ compatibility: 'ie9' })))
.pipe($.if(!PRODUCTION, $.sourcemaps.write()))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev()))
.pipe(gulp.dest(PATHS.dist + '/assets/css'))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev.manifest()))
.pipe(gulp.dest(PATHS.dist + '/assets/css'))
.pipe(browser.reload({ stream: true }));
}
// Combine JavaScript into one file
// In production, the file is minified
const webpack = {
config: {
module: {
rules: [
{
test: /.js$/,
loader: 'babel-loader',
exclude: /node_modules(?!\/foundation-sites)/,
},
],
},
externals: {
jquery: 'jQuery',
},
},
changeHandler(err, stats) {
log('[webpack]', stats.toString({
colors: true,
}));
browser.reload();
},
build() {
return gulp.src(PATHS.entries)
.pipe(named())
.pipe(webpackStream(webpack.config, webpack2))
.pipe($.if(PRODUCTION, $.uglify()
.on('error', e => { console.log(e); }),
))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev()))
.pipe(gulp.dest(PATHS.dist + '/assets/js'))
.pipe($.if(REVISIONING && PRODUCTION || REVISIONING && DEV, $.rev.manifest()))
.pipe(gulp.dest(PATHS.dist + '/assets/js'));
},
watch() {
const watchConfig = Object.assign(webpack.config, {
watch: true,
devtool: 'inline-source-map',
});
return gulp.src(PATHS.entries)
.pipe(named())
.pipe(webpackStream(watchConfig, webpack2, webpack.changeHandler)
.on('error', (err) => {
log('[webpack:error]', err.toString({
colors: true,
}));
}),
)
.pipe(gulp.dest(PATHS.dist + '/assets/js'));
},
};
gulp.task('webpack:build', webpack.build);
gulp.task('webpack:watch', webpack.watch);
// Copy images to the "dist" folder
// In production, the images are compressed
function images() {
return gulp.src('src/assets/images/**/*')
.pipe($.if(PRODUCTION, $.imagemin({
progressive: true
})))
.pipe(gulp.dest(PATHS.dist + '/assets/images'));
}
// Create a .zip archive of the theme
function archive() {
var time = dateFormat(new Date(), "yyyy-mm-dd_HH-MM");
var pkg = JSON.parse(fs.readFileSync('./package.json'));
var title = pkg.name + '_' + time + '.zip';
return gulp.src(PATHS.package)
.pipe($.zip(title))
.pipe(gulp.dest('packaged'));
}
// PHP Code Sniffer task
gulp.task('phpcs', function() {
return gulp.src(PATHS.phpcs)
.pipe($.phpcs({
bin: 'wpcs/vendor/bin/phpcs',
standard: './codesniffer.ruleset.xml',
showSniffCode: true,
}))
.pipe($.phpcs.reporter('log'));
});
// PHP Code Beautifier task
gulp.task('phpcbf', function () {
return gulp.src(PATHS.phpcs)
.pipe($.phpcbf({
bin: 'wpcs/vendor/bin/phpcbf',
standard: './codesniffer.ruleset.xml',
warningSeverity: 0
}))
.on('error', $.util.log)
.pipe(gulp.dest('.'));
});
// Start BrowserSync to preview the site in
function server(done) {
browser.init({
proxy: BROWSERSYNC.url,
ui: {
port: 8080
},
});
done();
}
// Reload the browser with BrowserSync
function reload(done) {
browser.reload();
done();
}
// Watch for changes to static assets, pages, Sass, and JavaScript
function watch() {
gulp.watch(PATHS.assets, copy);
gulp.watch('src/assets/scss/**/*.scss', sass)
.on('change', path => log('File ' + colors.bold(colors.magenta(path)) + ' changed.'))
.on('unlink', path => log('File ' + colors.bold(colors.magenta(path)) + ' was removed.'));
gulp.watch('**/*.php', reload)
.on('change', path => log('File ' + colors.bold(colors.magenta(path)) + ' changed.'))
.on('unlink', path => log('File ' + colors.bold(colors.magenta(path)) + ' was removed.'));
gulp.watch('src/assets/images/**/*', gulp.series(images, browser.reload));
}
// Build the "dist" folder by running all of the below tasks
gulp.task('build',
gulp.series(clean, gulp.parallel(sass, 'webpack:build', images, copy)));
// Build the site, run the server, and watch for file changes
gulp.task('default',
gulp.series('build', server, gulp.parallel('webpack:watch', watch)));
// Package task
gulp.task('package',
gulp.series('build', archive));
这是我的 config.yml 文件
# Browsersync config
BROWSERSYNC:
# URL of local development server goes here (ex. http://localsite.dev)
url: "http://localhost/atmosfera/"
# Autoprefixer will make sure your CSS works with these browsers
COMPATIBILITY:
- "last 2 versions"
- "ie >= 9"
- "ios >= 7"
# Set to true if you want static asset revisioning, helpful for cache busting
REVISIONING: false
# Gulp will reference these paths when it copies files
PATHS:
# Path to dist folder
dist: "dist"
# Paths to static assets that aren't images, CSS, or JavaScript
assets:
- "src/assets/**/*"
- "!src/assets/{images,images/**/*,js,js/**/*,scss,scss/**/*}"
# Paths to Sass libraries, which can then be loaded with @import
sass:
- "node_modules/foundation-sites/scss"
- "node_modules/motion-ui/src"
# Paths to JavaScript entry points for webpack to bundle modules
entries:
- "src/assets/js/app.js"
# Paths for the package task to include/exclude in .zip archive
package:
- "**/*"
- "!**/node_modules/**"
- "!**/packaged/**"
- "!**/src/**"
- "!**/codesniffer.ruleset.xml"
- "!**/composer.json"
- "!**/composer.lock"
- "!**/config.yml"
- "!**/config.default.yml"
- "!**/gulpfile.babel.js"
- "!**/package.json"
- "!**/package-lock.json"
- "!**/webpack.config.js"
# Paths for PHP CodeSniffer
phpcs:
- "**/*.php"
- "!wpcs"
- "!wpcs/**"
因为那个问题,我无法部署我的网站。我是 node js 的新手,gulp 谁能告诉我如何解决它?
已解决https://github.com/olefredrik/FoundationPress/issues/1219#issuecomment-361344578
问题是关于 windows 个路径。