在服务器端,我使用的是Connect和Socket.IO.我想提供我的客户端代码(也是CofeeScript)来编译(到JavaScript),uglyfied和gzipped.我找了Conenct中间件来做这件事,发现了uglify-js-middleware和gzippo.
但是我不确定将它转换为JavaScript的好方法是什么(没有API或什么?)以及我是否应该为每一步使用临时目录以便我可以使用uglify-js-middleware的src和dest选项和gzippo或是否有更好的方法来管理所有这些事情.
这可以在启动我的应用程序时完成,因此我不关心检查或任何事情.我可能会以某种方式使用Cake,但我真的不想为此添加一个额外的脚本,如果我可以管它,那将是很酷的,所以我不需要临时目录.
是否有某种中间件可以完成所有这些?我真的不认为我是第一个想要这样做的人.
哦,也许客户端目录中的CofeeScript可以组合成一个文件,但我想这不是一个真正的问题.
我有一个运行concat的gruntfile和带有特定选项的uglify(即mangle toplevel变量),然后我使用sed来更新index.html中对缩小文件的引用.由于sed,这个解决方案有效但不易维护.我试图使用usemin,但我无法弄清楚如何用uglifyjs的正确选项定义我自己的自定义步骤,而doco缺乏示例来做到这一点.我尝试使用之前写过的相同的uglify任务:
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
mangle: {
except: ['$', 'd3'],
toplevel: true
}
},
build: {
src: 'demo/js/<%= pkg.name %>.js',
dest: 'demo/js/<%= pkg.name %>.min.js'
}
},
useminPrepare : {
html : 'src/index.html',
options: {
flow: {
steps: {'js' : ['uglify'] }
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
Warning: Cannot find module 'path-to-module\node_modules\grunt-usemin\lib\config\uglify' Use --force to continue.
是否可以这样做,如果是这样,我在这里做错了什么?
我有一些javascript在缩小之前通过了linter,但之后没有.我应该担心错误/警告,如:
"Expected an assignment or function call and instead saw an expression"
"Use '!==' to compare with 'null'"
"Don't make functions within a loop"
"Missing '()' invoking a constructor."
"Expected a conditional expression and instead saw an assignment"
"Confusing use of '!'"
"A leading decimal point can be confused with a dot: '.5'"
"Expected an operator and instead saw ','"
"Expected an identifier and instead saw '}'"
"Expected ')' to match '(' from line 9 and instead saw '{'"
"Expected …Run Code Online (Sandbox Code Playgroud) 我安装了 npm 2.15.9,当我打开命令提示符时,在任何地方都可以正常工作。
我(据称)通过键入安装了 uglifyjs
npm install -g uglifyjs
Run Code Online (Sandbox Code Playgroud)
我尝试使用和不使用 -g,然后在我想使用它的文件夹中运行它。即使这样做并且没有收到任何错误,在 CMD 终端中键入“uglifyjs”或“node uglifyjs”也会返回标准错误消息 - uglifyjs 未被识别为内部或外部命令、可运行的程序或批处理文件。”
我究竟做错了什么?
编辑:是的,我尝试在每一步关闭并重新打开 CMD 窗口。
我有一个 webpack 配置,它可以与 typescript 完美配合,直到我必须缩小输出包。我有一个项目正在逐步更新为 typescript - 目前一个文件已迁移到 typescript 并且当我运行 babel-node 和我的开发包(它不使用 Uglify 来缩小 js)时它可以正常工作。但是,只要我运行我的 prod 包,我就会收到以下错误:
ERROR in main.ab0b2e37030c63351bb8.js from UglifyJs
SyntaxError: Unexpected token: name (App) [./components/App.ts:12,0]
Run Code Online (Sandbox Code Playgroud)
这是我的 webpack 配置:
ERROR in main.ab0b2e37030c63351bb8.js from UglifyJs
SyntaxError: Unexpected token: name (App) [./components/App.ts:12,0]
Run Code Online (Sandbox Code Playgroud)
App.ts 看起来像这样:
const config = {
context: ROOT,
output: {
path: path.resolve(__dirname, '../build/public/assets'),
publicPath: '/assets/',
sourcePrefix: ' ',
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: "awesome-typescript-loader"
},
{
enforce: "pre",
test: /\.js$/,
loader: "source-map-loader"
},
{ …Run Code Online (Sandbox Code Playgroud)我想通过命令行自动缩小文件夹。然后我装了npm install -g minify-all,然后minify-all /opt/myapp/。它给:
minify-all /opt/myapp/
found file: /opt/myapp/addin_online/css/Common.css
/usr/local/lib/node_modules/minify-all/node_modules/node-minify/lib/node-minify.js:104
throw new Error(bin + ' not found !');
^
Error: uglifyjs not found !
at getPath (/usr/local/lib/node_modules/minify-all/node_modules/node-minify/lib/node-minify.js:104:17)
at Object.compress (/usr/local/lib/node_modules/minify-all/node_modules/node-minify/lib/node-minify.js:132:27)
at Object.minify (/usr/local/lib/node_modules/minify-all/node_modules/node-minify/lib/node-minify.js:83:10)
at /usr/local/lib/node_modules/minify-all/index.js:30:13
at /usr/local/lib/node_modules/minify-all/index.js:14:13
at Array.forEach (native)
at walk (/usr/local/lib/node_modules/minify-all/index.js:10:36)
at /usr/local/lib/node_modules/minify-all/index.js:16:13
at Array.forEach (native)
at walk (/usr/local/lib/node_modules/minify-all/index.js:10:36)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这一问题?是minify-all使用正确的包装吗?
编辑1:我尝试过sudo npm install uglify-js -g
/usr/local/bin/uglifyjs -> /usr/local/lib/node_modules/uglify-js/bin/uglifyjs
/usr/local/lib
??? uglify-js@3.0.11
??? commander@2.9.0
? ??? graceful-readlink@1.0.1
??? source-map@0.5.6
Run Code Online (Sandbox Code Playgroud)
和 …
我想丑化 Angualr 4 输出文件并修改以 my_ 开头的特定变量。下面的命令行正是我想要的。我只是希望能够告诉 angular-cli 的 webpack 中的 uglifyJs 插件做同样的事情。
> uglifyjs script.js --source-map "filename='script.js.map',includeSources,content=inline" -o script.js -m
-c toplevel --mangle-props \"regex=/^my_[^_]{1}/\" --name-cache uglify-name-cache.json
Run Code Online (Sandbox Code Playgroud)
目前,我使用弹出命令从 angular-cli 导出 webpack.config.js。但我只是找不到任何有关如何告诉自动生成文件的 uglifyJsplugin 正则表达式和名称缓存参数的文档。这两点对于我们的应用程序都至关重要。
From webpack.config.js produced by eject command:
new UglifyJsPlugin({
"test": /\.js$/i,
"extractComments": false,
"sourceMap": true,
"cache": false,
"parallel": false,
"uglifyOptions": {
"output": {
"ascii_only": true,
"comments": false
},
"ecma": 5,
"warnings": false,
"ie8": false,
"mangle": true,
"compress": {}
}
}),
Run Code Online (Sandbox Code Playgroud)
这是关于如何使用 angualr pop 捕获自动生成的 weppack.config 并修改它的博客文章。Angular-cli:如何忽略类名被缩小但找不到有关如何为 ugllify …
考虑到这个Webpack 3.8.1配置。
// common
module.exports = {
context: path.resolve(__dirname, './src'),
entry: [
'whatwg-fetch',
'./index'
],
output: {
path: path.resolve(__dirname, 'build/assets'),
publicPath: '/assets/',
filename: 'main.js'
},
plugins: [
new CleanWebpackPlugin(['build']),
],
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
}
}, {
test: /\.(scss|css)$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'sass-loader'
}],
}, {
test: /\.(png|jpg|gif|woff2|woff)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
}]
} …Run Code Online (Sandbox Code Playgroud) 我有以下命令:
uglifyjs main.js bar.js -m toplevel reserved=['$','addTo','exports'] -c --source-map -o out.js
Run Code Online (Sandbox Code Playgroud)
但它会抛出错误:
ERROR: ENOENT: no such file or directory, open 'reserved=[$,addTo,exports]'
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
Run Code Online (Sandbox Code Playgroud)
如何同时使用顶级选项(mangle 函数名称)和 -m 选项下保留的选项?我正在使用最新的 uglifyJs 和 Node 8.6 。
我正在做一些自动化任务,我注意到grunt.js和uglify模块没有重写缩小的文件.每次我开始繁琐的任务时,他们都会附加新版本的代码.
module.exports = function(grunt) {
grunt.initConfig({
uglify : {
build : {
src : ['**/*.js', '!*.min.js'],
cwd : 'js/app/modules/',
dest : 'js/app/modules/',
expand : true,
ext : '.main.min.js',
},
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['uglify']);
};
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能避免它?我只想要文件中最新版本的代码.
uglifyjs ×10
javascript ×3
node.js ×3
webpack ×3
gruntjs ×2
npm ×2
angular ×1
coffeescript ×1
connect ×1
ecmascript-6 ×1
grunt-usemin ×1
jshint ×1
jslint ×1
material-ui ×1
minify ×1
tree-shaking ×1
typescript ×1
uglifyjs2 ×1