我已经安装了uglify-js 2.2.2并尝试使用API来缩小node.js应用程序中的一些javascript,但是在尝试访问解析器时出现类型错误.
我的尝试是基于API部分中的github自述文件.
这是我从节点shell获得的尝试/输出.在这里,我甚至没有尝试调用该parse方法,我只是显示它完全无法访问.
$ node
> var jsp = require("uglify-js").parser;
undefined
> jsp.parse
TypeError: Cannot read property 'parse' of undefined
at repl:1:5
at REPLServer.self.eval (repl.js:111:21)
at Interface.<anonymous> (repl.js:250:12)
at Interface.EventEmitter.emit (events.js:88:17)
at Interface._onLine (readline.js:183:10)
at Interface._line (readline.js:501:8)
at Interface._ttyWrite (readline.js:719:14)
at ReadStream.<anonymous> (readline.js:105:12)
at ReadStream.EventEmitter.emit (events.js:115:20)
at emitKey (readline.js:1041:12)
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么,或者是否有某种我通过谷歌找不到的错误?
正如在角度的许多地方记录的那样,您必须将服务名称放在数组中以便在缩小时存活.
我遇到的问题是它真的很丑,你必须将服务名称两次.我也不想在uglifyjs中关闭mangling.
有没有办法在构建过程中自动创建括号或使用其他方法自动处理此问题?
我有一个在开发环境中运行良好的应用程序,但它在生产环境中不起作用,这是由 uglify 引起的(我认为是)
我有一个用户构建的数据,我将它保存到文件或 LocalStorage(两种情况下都是 json,所以无关紧要)。
该结构由 3 种类型的节点构成。我已经在基类中实现了属性(都继承自一个类):type =this.constructor.name并且它在开发中运行良好。当我加载应用程序并读取缓存时,我会遍历 JSON 并使用switch (obj.type) case class1.name...等方法重建对象。它运行良好。
但是,当我为生产而构建时,当我调用class1.nameorclass2.name或class3.name它全部返回时e,这使得无法恢复正确的对象......
我不认为这是特定于框架的问题,但是如果有人需要知道我使用 VueJS 和 Quasar Framework 进行构建。
有任何想法吗?
我知道 ReactJS 转换__DEV__为"production" !== process.env.NODE_ENV-像这样。我在某处看到它直接转换为布尔值,具体取决于环境,但这是另一个令人困惑的地方。
不过,我想知道是什么特定的 babel-plugin/process/packages 实际上从生产 React ( ) 中删除了这个条件react.min.js,因为该文件中没有这样的条件。
根据我的理解,这是一个两步过程:
if
("production" !== process.env.NODE_ENV)调用 后者是如何/在哪里实施的?
我正在通过 UglifyJS 发送一个脚本,其中包含一些可选更改语法的实例。在浏览器中,这种语法可以完美地工作。但是,UglifyJS 在文件上产生以下错误:
\nParse error at /Users/username/Developer/script.js:84,32\n node.children[0]?.tagName === "P";\n ^\nERROR: Unexpected token: punc \xc2\xab.\xc2\xbb\n at JS_Parse_Error.get (eval at <anonymous> (/opt/homebrew/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)\n at fatal (/opt/homebrew/lib/node_modules/uglify-js/bin/uglifyjs:428:27)\n at run (/opt/homebrew/lib/node_modules/uglify-js/bin/uglifyjs:366:9)\n at Object.<anonymous> (/opt/homebrew/lib/node_modules/uglify-js/bin/uglifyjs:275:5)\n at Module._compile (node:internal/modules/cjs/loader:1092:14)\n at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)\n at Module.load (node:internal/modules/cjs/loader:972:32)\n at Function.Module._load (node:internal/modules/cjs/loader:813:14)\n at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)\n at node:internal/main/run_main_module:17:47\nRun Code Online (Sandbox Code Playgroud)\n我已经浏览了文档,但我不确定要添加哪些参数(如果有)才能完成这项工作。
\n我可能在我的代码中有一个错误,因为我真的很想使用Grunt.
我在我的本地macbook上使用指南针,并且还使用Grunt进行uglify.我遵循了这个指南:http://matthew-jackson.com/notes/development/grunt-workflow-for-sass-compass-and-js/
我设法让它工作正常,但当我在我的JS文件中进行更改时,它显示为多次运行,因此我的js文件中的一个简单的"警报"框测试被编译几次(大约10)到我的min.js文件,它当然应该只执行一次!
它为什么这样做?
这是我的gruntfile:https://github.com/Tjobbe/sample-grunt-project/blob/master/gruntfile.js和我的package.json文件:https://github.com/Tjobbe/sample-grunt-project /blob/master/package.json
你可能想要的任何东西都在这里:https://github.com/Tjobbe/sample-grunt-project
这里我正在创建压缩javascript文件的应用程序
我做的步骤,
错误: 找不到模块'uglify-js'
Server.js
var UglifyJS = require('uglify-js');
var fs = require('fs');
var result = UglifyJS.minify('site.js', {
mangle: true,
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true
}
});
fs.writeFileSync('site.min.js', result.code);
Run Code Online (Sandbox Code Playgroud)
已安装'uglify-js modules'
C:\Users\carunraj\AppData\Roaming\npm\node_modules\uglify-js
Run Code Online (Sandbox Code Playgroud)
Server.js in
C:\Program Files\nodejs
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙吗?
我正在使用gulp将browserify + babelify与uglifyjs捆绑在一起.但是,从我的项目生成的源图只给了我捆绑的版本,而不是捆绑的版本.
这是我的设置:
var gulp = require('gulp'),
source = require('vinyl-source-stream'),
browserify = require('browserify'),
gutil = require('gulp-util'),
buffer = require('vinyl-buffer'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify'),
file = 'index.js';
gulp.task('build', function(){
return browserify({
entries: [file],
transform: ["babelify"]
})
.bundle()
.pipe(source(file))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./public/js'))
.pipe(gutil.noop())
})
Run Code Online (Sandbox Code Playgroud)
有没有办法让我创建一个捆绑babel => browserify => uglify并仍然将地图返回给我的pre-babel文件的构建?
我也不介意不使用gulp(我实际上更喜欢咕噜声,但这个设置过去常常适合我).
我在2012年发现了一篇有类似问题的帖子,但它以不同的方式调用了uglifyjs
我有一个Windows 7环境,通过npm安装uglifyjs 2并发布如何全局安装节点模块?
我将uglify称为如下:
uglifyjs --compress dead_code=true --mangle --mangle-toplevel -- x.js > x-min.js
Run Code Online (Sandbox Code Playgroud)
我的代码破解(从127kb到55kb)但是当我打开我的代码时,我发现函数和变量名是原始的.
浏览器演示工具提供相同的结果.
有人建议我如何使用uglify或不使用uglify来讨论变量和函数名称?
编辑:发布此问题后不久找到了解决方案.请参阅下面的我的答案
我有一个基于webpack 2的项目,它使用ExtractTextPlugin将SCSS/CSS拉出到一个单独的文件中.
另外,我在webpack(vendor和app)中定义了两个入口点,它们构建到我的JS包中.
出于某种原因,ExtractTextPlugin似乎打破了为应用程序包生成的源图app.js.map.如果我查看源图,它指向提取的CSS文件中的随机行,而不是JS.
查看源图文件本身,我只看到"sources"下面列出的CSS和SCSS文件(下面的简短示例):
{"version":3,"sources":["webpack:///webpack:///~/icon-font/package/styles/ficon.css","webpack:///webpack:///~/styles/package/styles/_imports.scss","webpack:///webpack:///~/styles/package/styles/includes/_variables.scss","webpack:///webpack:///~/styles/package/styles/includes/_mixins-utilities.scss", .....
Run Code Online (Sandbox Code Playgroud)
但是,如果我ExtractTextPlugin在webpack配置中注释掉,我会在源代码中列出JS文件:
{"version":3,"sources":["webpack:///app-552b3935c142f5001484.js","webpack:///./src/lib/Globals.js","webpack:///./src/actions/AdActions.js", ....
Run Code Online (Sandbox Code Playgroud)
所以不确定这里发生了什么......看起来有点像ExtractTextPlugin破坏或覆盖应用程序包的源图?
以下是我在webpack配置中定义的所有相关插件的方法:
{
entry: {
vendors: [
'react',
'react-dom',
'react-redux',
],
app: path.resolve(__dirname, './../src/client.js'),
},
output: {
path: path.resolve(__dirname, './../dist/assets/'),
filename: '[name]-[chunkhash].js',
sourceMapFilename: '[name]-[chunkhash].js.map',
},
cache: false,
devtool: 'source-map',
module: {
rules: [
{
test: /\.(scss|sass|css)$/,
loader: ExtractTextPlugin.extract({
loader: [
'css?sourceMap',
'postcss-loader',
'sass?sourceMap'
],
}),
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [path.join(__dirname, '../src')], …Run Code Online (Sandbox Code Playgroud) uglifyjs ×10
javascript ×7
webpack ×3
node.js ×2
angularjs ×1
babeljs ×1
browserify ×1
ecmascript-6 ×1
es6-class ×1
gruntjs ×1
gulp ×1
minify ×1
reactjs ×1
rollupjs ×1
source-maps ×1
webpack-2 ×1