Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}).join('');
response.error = extend(true, e, {
assetName: assetName,
errorSource: errorSource
});
} else {
/* eslint-disable no-console */
console.error(e);
/* eslint-enable no-console */
}
}
} else if (path.extname(assetName) === '.css') {
const uglifycssOpts = buildOpts.uglifycss || {};
minifiedCode = cssUglify.processString(content, uglifycssOpts);
}
if(minifiedCode) {
fs.writeFileSync(path.resolve(cwd, assetName), minifiedCode, {encoding: 'utf8'});
// 重新生成版本号, webpack 打的样式文件 hash 会根据所在目录不同而不同,造成 beta/prd 环境下版本号不一致
if(assetName.indexOf(HASH_PLACEHOLDER) > -1) {
const version = md5(minifiedCode).slice(0, 20); // 和 webpack hash 长度保持一致
const nextName = assetName.replace(HASH_PLACEHOLDER, version);
fs.renameSync(path.resolve(cwd, assetName), path.resolve(cwd, nextName));
response.replacedAssets = [assetName, nextName];
} else {
response.replacedAssets = [assetName, assetName];
}
}
}
return codeLine = ('line: ' + (e.line + index) + ' ').grey + codeLine.red + '\n';
}).join('');
response.error = extend(true, e, {
assetName: assetName,
errorSource: errorSource
});
} else {
/* eslint-disable no-console */
console.error(e);
/* eslint-enable no-console */
}
}
} else if (path.extname(assetName) === '.css') {
var uglifycssOpts = buildOpts.uglifycss || {};
minifiedCode = cssUglify.processString(content, uglifycssOpts);
}
if (minifiedCode) {
fs.writeFileSync(path.resolve(cwd, assetName), minifiedCode, { encoding: 'utf8' });
// 重新生成版本号, webpack 打的样式文件 hash 会根据所在目录不同而不同,造成 beta/prd 环境下版本号不一致
if (assetName.indexOf(HASH_PLACEHOLDER) > -1) {
var version = md5(minifiedCode).slice(0, 20); // 和 webpack hash 长度保持一致
var nextName = assetName.replace(HASH_PLACEHOLDER, version);
fs.renameSync(path.resolve(cwd, assetName), path.resolve(cwd, nextName));
response.replacedAssets = [assetName, nextName];
} else {
response.replacedAssets = [assetName, assetName];
}
}
}
initCustomCss() {
const uglifycss = require('uglifycss');
const rawCss = this.configManager.getConfig('crowi', 'customize:css') || '';
// uglify and store
this.customCss = uglifycss.processString(rawCss);
}
const buildCheck = (options) => {
let initTemplate = fs.readFileSync(`${srcPath}/template.html`, 'utf-8');
let cssContent = fs.readFileSync(`${srcPath}/template.css`, 'utf-8');
let jsContent = fs.readFileSync(`${srcPath}/template.js`, 'utf-8');
cssContent = uglifyCss.processString(cssContent, { expandVars: false });
jsContent = uglifyJs.minify(jsContent);
Recurs(dir).then(
(files) => {
files.forEach((file) => {
const languageStrings = ini.parse(fs.readFileSync(file, 'UTF-8'));
// Build the variables into json for the unsupported page
if (languageStrings.MIN_PHP_ERROR_LANGUAGE) {
const name = file.replace('.ini', '').replace(/.+\//, '').replace(/.+\\/, '');
unsupported += `"${name}":{"language":"${languageStrings.MIN_PHP_ERROR_LANGUAGE}","header":"${languageStrings.MIN_PHP_ERROR_HEADER}","text1":"${languageStrings.MIN_PHP_ERROR_TEXT}","help-url-text":"${languageStrings.MIN_PHP_ERROR_URL_TEXT}"},`;
}
// Build the variables into json for the unsupported page
if (languageStrings.BUILD_INCOMPLETE_LANGUAGE) {
const name = file.replace('.ini', '').replace(/.+\//, '').replace(/.+\\/, '');
const loadStyleAsString = fileName => {
const content = fs.readFileSync(path.join(__dirname, fileName), {
encoding: 'utf8',
});
if (process.env.NODE_ENV !== 'production') return content;
// Minify styles for production usage
return uglifycss.processString(content);
};
if (isCliArgvCloseMangle || isBuildOptsCloseMangle) {
willMangle = false;
}
try {
let ast = jsParser.parse(content);
ast = willMangle ? jsUglify.ast_mangle(ast, uglifyjsOpts.mangle) : ast;
ast = uglifyjsOpts.squeeze ? jsUglify.ast_squeeze(ast, uglifyjsOpts.squeeze) : ast;
minifiedCode = jsUglify.gen_code(ast, uglifyjsOpts.genCode);
} catch(e) {
response.error = extend(true, e, {assetName: assetName});
}
} else if (path.extname(assetName) === '.css') {
const uglifycssOpts = buildOpts.uglifycss || {};
minifiedCode = cssUglify.processString(content, uglifycssOpts);
}
if(minifiedCode) {
fs.writeFileSync(path.resolve(cwd, assetName), minifiedCode, {encoding: 'utf8'});
// 重新生成版本号, webpack 打的样式文件 hash 会根据所在目录不同而不同,造成 beta/prd 环境下版本号不一致
if(assetName.indexOf(HASH_PLACEHOLDER) > -1) {
const version = md5(minifiedCode).slice(0, 20); // 和 webpack hash 长度保持一致
const nextName = assetName.replace(HASH_PLACEHOLDER, version);
fs.renameSync(path.resolve(cwd, assetName), path.resolve(cwd, nextName));
response.replacedAssets = [assetName, nextName];
} else {
response.replacedAssets = [assetName, assetName];
}
}
}
var isBuildOptsCloseMangle = uglifyjsOpts.mangle === false;
if (isCliArgvCloseMangle || isBuildOptsCloseMangle) {
willMangle = false;
}
try {
var ast = jsParser.parse(content);
ast = willMangle ? jsUglify.ast_mangle(ast, uglifyjsOpts.mangle) : ast;
ast = uglifyjsOpts.squeeze ? jsUglify.ast_squeeze(ast, uglifyjsOpts.squeeze) : ast;
minifiedCode = jsUglify.gen_code(ast, uglifyjsOpts.genCode);
} catch (e) {
response.error = extend(true, e, { assetName: assetName });
}
} else if (path.extname(assetName) === '.css') {
var uglifycssOpts = buildOpts.uglifycss || {};
minifiedCode = cssUglify.processString(content, uglifycssOpts);
}
if (minifiedCode) {
fs.writeFileSync(path.resolve(cwd, assetName), minifiedCode, { encoding: 'utf8' });
// 重新生成版本号, webpack 打的样式文件 hash 会根据所在目录不同而不同,造成 beta/prd 环境下版本号不一致
if (assetName.indexOf(HASH_PLACEHOLDER) > -1) {
var version = md5(minifiedCode).slice(0, 20); // 和 webpack hash 长度保持一致
var nextName = assetName.replace(HASH_PLACEHOLDER, version);
fs.renameSync(path.resolve(cwd, assetName), path.resolve(cwd, nextName));
response.replacedAssets = [assetName, nextName];
} else {
response.replacedAssets = [assetName, assetName];
}
}
}
isMinifyJs = options && !!options.minifyJs,
ignore = options['ignore'] || 'ignore',
basePath = options['basePath'] || '',
queryKey = options['queryKey'] || '_gm_inline',
queryRegx = new RegExp('&*'+ queryKey +'[=|&]?', 'i'),
code = content,
tags;
tags = content.match(/<[\s\S]*?<*\/*[\s\S]*?>/gi);
if(tags && tags[0] && tags[0].indexOf(ignore) !== -1)
return content;
if('css' === type){
if(!isMinifyCss) return content;
code = uglifycss.processString(content, options);
}
else if('js' === type){
if(!isMinifyJs) return content;
/**
* FIX BUGS FOR replace
*/
// gmutil.alert('content: \n'+content)
// gmutil.alert('opts: \n'+JSON.stringify(options))
var pt = /(?=['"]?)([\w\/\-\?\&\=]*?\.js)(?=['"]?)/gm,
item
// 如果没有标记inline,那么不处理
if((item = content.match(pt)) && (item = item[0])){
if(!item.match(queryRegx)) return content
if(!fs.existsSync(sourceFile)){
gmutil.error('\n*Error: \n*Inline File Not Exist: '+sourceFile+'\n')
return match;
}
content = getFileContent(sourceFile);
// add for gulpman store save
store.save(sourceFile, _file.path)
if('css' === type){
if(!isMinifyCss)
return joint('style', content);
code = uglifycss.processString(content, options);
code = joint('style', code);
}
else if('js' === type){
if(!isMinifyJs)
return joint('script', content);
code = jsmin(content, options).code.replace(/\n*\t*/gi, '');
code = joint('script', code);
}
return code;
};
import * as UglifyCSS from 'uglifycss';
var test1 = UglifyCSS.processString('some css string');
var test2 = UglifyCSS.processString('some css string', {
maxLineLen: 0,
expandVars: true,
uglyComments: true,
cuteComments: true
});
var test3 = UglifyCSS.processFiles(['/path/to/file']);
var test4 = UglifyCSS.processFiles(['/path/to/file'], {
maxLineLen: 0,
cuteComments: true
});