javascript - 丑陋的代码不会写入文件

标签 javascript node.js uglifyjs

我想遍历目录并获取 .js 文件并使用 uglifyjs 和 node.js 进行丑化,但我的代码有一些问题。下面是我的代码:

var mkdirp = require( 'mkdirp' ),
    walk = require( 'walk' ),
    fs = require( 'fs' ),
    jsp = require( 'uglify-js' ).parser,
    pro = require( 'uglify-js' ).uglify,
    files   = [],
    htmlfilestouglify = [];
// Walker options
var walker  = walk.walk( 'shreedhar/www' , { followLinks: false } );

walker.on('file', function( root, stat, next ) {
    // Add this file to the list of files
    files.push(root + '/' + stat.name);
    next();
});

walker.on( 'end', function() {
    for( var i=0; i<files.length; i++){
        // console.log(files[i]);
        var ext = files[i].split( '.' ).pop();
        if( ext == 'js' ){ 
            console.log( files[i] );
            var orig_code = fs.readFileSync( files[i] ).toString(); //read the content of the file

            // create directory
            var fnarr = files[i].split('/'),
                fname = fnarr.pop( files[i].length-1 ),

                dirlen = fnarr.length,
                dirname = fnarr.slice( 0, dirlen ).join('/');

            mkdirp('build/'+dirname );

            // create file
            fs.open('build/'+dirname+'/'+fname, 'w');

            // uglify the content of the file
            var ast = jsp.parse(orig_code); // parse code and get the initial AST
            ast = pro.ast_mangle(ast); // get a new AST with mangled names
            ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
            var final_code = pro.gen_code(ast); 


            // write uglified code into file

            fs.writeFileSync('build/'+dirname+'/'+fname, final_code); 

        }
        else if( ext == 'html'){
            htmlfilestouglify.push(files[i]);
        }
    }
});

问题是:如果我注释 writeFileSync 并运行上面的代码,它将创建目录,并在取消注释 writeFileSync 并运行后再次将缩小的代码写入文件,我无法找出代码的问题..任何人都可以帮我吗?

最佳答案

因为mkdirp是异步的。调用同步版本,它应该可以工作:

mkdirp.sync('build/' + dirname);

关于javascript - 丑陋的代码不会写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013648/

相关文章:

javascript - UglifyJS 可以替代 RequireJS 吗?

javascript - 半混淆/丑化 JavaScript

javascript - 带有 CSS 标签 max-device-width 的 html 中的 if 子句是否可能?

javascript - Knockout JS - 数据绑定(bind)多个值

Node.js路径错误问题

node.js - 如何使用express、sequelize、mocha和supertest进行回滚单元测试

javascript - 如何防止IE11弹窗(您确定要离开此页面吗)

javascript - 切换 ul(子菜单)

python - 从 AWS lambda 上的 nodejs 调用 python - 权限被拒绝

angularjs - "Unknown provider: aProvider <- a"如何找到原始提供商?