[英]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路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.