1

我正在尝试使用“uglifyjs”将我的所有 javascript 文件压缩为一个“.js”文件,以使 karma ng-scenario e2e 测试正常运行。但是,当我输入这个

type My.js MyLogon.js MyMenu.js Common\directives\BaseDirectives.js Common\factories\BaseFactories.js Module\AccountConfirmationModule.js Module\AccountModule.js Module\ApplicationModule.js Module\ApplicationRoleModule.js Module\HeaderModule.js Module\Index.js Module\LogOnModule.js Module\PasswordModule.js Module\QAModule.js Module\UsernameModule.js > files.min.js | uglifyjs -o files.min.js

我收到以下错误

Get-Content:找不到接受参数“MyLogon.js”的位置参数。在行:1 字符:5

我究竟做错了什么?

4

3 回答 3

2

Cmd shell 中的type命令支持同时输入多个文件。文件名只是空格分隔。在 Powershell 中,typeGet-Content. 它支持多个源文件,但不使用空格分隔。需要一个数组,由-Path支持 String 数组的参数指定:

man type    
Get-Content [-Path] <string[]> [-Credential <PSCredential>] ...

尝试向 cmdlet 传递一个文件名数组。像这样,

type @("My.js", "MyLogon.js", "MyMenu.js")  | uglifyjs -o files.min.js
于 2013-10-29T21:11:12.897 回答
1

在powershell中,列表用逗号分隔,而不是空格

type file1, file2, file3
于 2013-10-29T21:09:13.157 回答
0

如果所有文件都在当前文件夹中并且没有其他 *.js 文件:

if (test-path files.min.js) { remove-item files.min.js }
gci *.js | foreach{ type $_ >> files.min.js }
uglifyjs -o files.min.js

如果不是这种情况,可以这样设置列表:

$files = ("My.js", "MyLogon.js", "MyMenu.js", "Common\directives\BaseDirectives.js", "Common\factories\BaseFactories.js", "Module\AccountConfirmationModule.js", "Module\AccountModule.js", "Module\ApplicationModule.js", "Module\ApplicationRoleModule.js", "Module\HeaderModule.js", "Module\Index.js", "Module\LogOnModule.js", "Module\PasswordModule.js", "Module\QAModule.js", "Module\UsernameModule.js")
if (test-path files.min.js) { remove-item files.min.js }
$files | foreach{ type $_ >> files.min.js }
uglifyjs -o files.min.js
于 2013-10-29T21:08:38.453 回答