标签: browserify

浏览器和已经拥有源映射的文件

我有一些JavaScript代码从任意编译到JS语言编译到commonJS模块,我想使用sourcemaps调试浏览器化的代码.

所以我的文件已经//# sourceMappingURL=index.js.map有了,我希望browserify能够读取并转换它们,这样我就可以使用我原来的非JS语言进行调试.

我需要另一个变换吗?

我尝试使用browserify的调试标志,然后它确实生成了一个源图,但是它用于中间JS文件,而不是原始的非JS文件.我甚至看到原始//# sourceMappingURL语句在包中挥之不去,而我的浏览器调试器并不喜欢它.

这有可能吗?

我看到这一点:使用browserify后保留原始的打字稿源图但它不起作用.

javascript browserify source-maps

9
推荐指数
1
解决办法
582
查看次数

顺序依赖:jQuery未使用browserify定义

我正在尝试使用以下插件/js/lib/stellar.jquery.js:

var $ = require('jquery');

require('./lib/stellar.jquery')

$(function(){
    $.stellar();
});
Run Code Online (Sandbox Code Playgroud)

当我运行这个虽然我得到jQuery没有定义.我认为恒星jQuery插件是在jq库之前加载的.在stellar插件的底部有这个代码:

    ...
    // Expose the plugin class so it can be modified
    window.Stellar = Plugin;
}(jQuery, this, document));
Run Code Online (Sandbox Code Playgroud)

将"jQuery"更改为"$"也不起作用,给出"$ is not defined"

javascript jquery npm browserify

9
推荐指数
2
解决办法
6525
查看次数

对factor-bundle的部分包进行一些操作

我正在使用浏览器和factor-bundle.我有以下代码:

b = browserify({
        entries: [ 'a.js', 'b.js'],
        plugin: [ [ 'factor-bundle', { outputs: [ 'build/a.js', 'build/b.js' ] } ] ]
    })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(buffer())
    .pipe(gulp.dest('/build/common'));
Run Code Online (Sandbox Code Playgroud)

我想在parial包('build/a.js'和'build/b.js')上管理一些动作(比如uglify,bundle-collapser或其他工作).我尝试使用factor-bundle页面上描述的方法:

b.plugin('factor-bundle', { outputs: [ write('x'), write('y') ] });
function write (name) {
    return concat(function (body) {
        console.log('// ----- ' + name + ' -----');
        console.log(body.toString('utf8'));
    });
}
Run Code Online (Sandbox Code Playgroud)

但我不理解write()方法,也不知道如何执行uglification以及如何gulp.dest结果.
任何的想法?说明?

javascript node.js browserify gulp factor-bundle

9
推荐指数
1
解决办法
978
查看次数

如何分析和减少浏览器生成的文件的大小?

我有一个使用browserify的小应用程序,它最近引起我的注意,有一个非常大的包.

是否有工具来分析browserify文件并找出大部分文件大小的来源?

如何减少浏览器生成文件的大小?

javascript performance browserify

9
推荐指数
1
解决办法
1673
查看次数

编程时使用Babelify sourceType错误

我正在使用Gulp,BrowserifyBabelify将我的源代码从ES6 + JSX编译为纯Javascript.

gulpfile.js看起来像:

var gulp = require('gulp')
var fs = require("fs")
var browserify = require("browserify")
var babelify = require("babelify")

gulp.task('es6',function(){
  return browserify({ debug: true })
    .transform(babelify.configure({
      extensions: ['.es6']
    }))
    .require("./src/es6/app.es6", { entry: true })
    .bundle()
    .on("error", function (err) { console.log("Error : " + err.message); })
    .pipe(fs.createWriteStream("./build/js/bundle.js"))
})
Run Code Online (Sandbox Code Playgroud)

我的第一行app.es6是:

"use strict"

import React from 'react'
import MenuBar from './menu'
Run Code Online (Sandbox Code Playgroud)

当我运行时$ gulp es6,我收到以下错误:

Error : 'import' and 'export' may …
Run Code Online (Sandbox Code Playgroud)

javascript browserify ecmascript-6 reactjs babeljs

9
推荐指数
1
解决办法
8760
查看次数

使用browserify,未定义未捕获的ReferenceError:函数

我在http://browserify.org/中尝试示例并尝试按如下方式进行函数调用:

我的HTML是:

<!DOCTYPE html>
<html>
<head>
<title>Test Browserify</title>

<script src="bundle.js"></script>

</head>
<body>
  <button onclick="hello()">test</button>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的javascript是:

var unique = require('uniq');

var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];

console.log(unique(data));

function hello(){
    alert("here");
}
Run Code Online (Sandbox Code Playgroud)

我做了浏览mainify.js -o bundle.js,所以我可以成功使用require.

但是当我点击按钮时,我有错误:

"未捕获的ReferenceError:未定义hello"

任何建议将不胜感激!

javascript node.js browserify

9
推荐指数
1
解决办法
4156
查看次数

使用IntelliJ和源映射启用JavaScript调试

我使用IntelliJ 14.1.4创建JavaScript应用程序.为了调试,我使用Gulp启动了一个Web服务器.然后我启动JavaScript调试并与Chrome连接(通过插件).我可以通过这种方式调试"普通"JavaScript,但是当使用源映射(由browserify创建)时,IntelliJ不再触发断点.如果我使用Chrome的调试工具,一切都按预期工作,但IntelliJ似乎无法转换其断点.

有没有办法让这项工作?我花了很长时间研究这个问题,据我所知,IntelliJ支持源地图.此外,我还能够使用这种使用源映射的方法来调试GWT生成的JavaScript.

更新:似乎此问题存在当前问题.如果知道任何工作环节,我很高兴听到解决方案.


下面的答案解决了这个问题.以下是我设置gulp构建的方法:

bundler.bundle()
    .pipe(exorcist('./build/bundle.js.map', null, null, '../src'))
Run Code Online (Sandbox Code Playgroud)

./build是我生成文件夹,并../src作为JavaScript源文件的根,相对于生成的文件夹.

javascript intellij-idea browserify source-maps

9
推荐指数
1
解决办法
2288
查看次数

如何浏览,编译ES6和缩小NodeJS应用程序

我试图同时掌握browserify和ES6.我有以下基本的Node文件:

main.js

var foo = require('./foo.js');
var x = foo.math(200);
console.log(x);
Run Code Online (Sandbox Code Playgroud)

foo.js

exports.math = (n)=>{ 
  return n * 111;
};
Run Code Online (Sandbox Code Playgroud)

现在我想做以下事情:

  • 将其浏览为文件,bundle.js以便将其作为脚本包含在我的网站中
  • 使用babel编译JS使所有浏览器都可以读取ES6
  • 缩小bundle.js以改善浏览器中的加载时间

我在全局安装了browserify,并使用以下命令运行: browserify main.js > bundle.js

效果很好.但我应该先运行babel吗?我如何完成我的3步骤以及按什么顺序完成(当然缩小必须在最后进行)?我应该用咕噜声做这一切吗?

javascript node.js browserify ecmascript-6 babeljs

9
推荐指数
1
解决办法
3837
查看次数

Browserify + Watchify + Tsify + Gulp的性能问题

我有一个"中等"的Typescript应用程序(在很简单,但不是企业级,数千行)依赖于jQuery,React和SocketIO - 以及其他较小的库.

我目前的gulpfile是这样的:

var gulp = require("gulp"),
    $ = require("gulp-load-plugins")(),
    _ = require("lodash"),
    tsify = require("tsify"),
    browserify = require("browserify"),
    source = require("vinyl-source-stream"),
    debowerify = require("debowerify"),
    watchify = require("watchify"),
    lr = require("tiny-lr"),
    buffer = require("vinyl-buffer");

var lrServer = lr();

var config = {
    scripts: {
        base: __dirname + "/Resources/Scripts",
        main: "Application.ts",
        output: "App.js"
    },

    styles: {
        base: __dirname + "/Resources/Styles",
        sheets: ["Application.less", "Preload.less"],
        autoprefixer: ["last 2 version", "safari 5", "ie 8", "ie 9", "opera 12.1", "ios 6", "android 4"]
    }, …
Run Code Online (Sandbox Code Playgroud)

browserify typescript gulp watchify tsify

9
推荐指数
1
解决办法
1969
查看次数

在开发期间,如何在watchify完成之前阻止页面加载?

这是一个典型的工作流程:

  1. 编辑JS文件
  2. 保存文件,watchify会自动开始为我重建它
  3. alt-tab到浏览器
  4. ctrl + R重新加载页面

这很好,除非watchify需要比第3步和第4步更长的时间,因为你得到过时的代码或错误,它很糟糕.

有没有一种简单的方法来保证永远不会发生?就像watchify向我的服务器发出信号的方式一样,它应该在尝试加载请求的页面之前等待另一秒钟?如果不存在这样的事情,人们如何在实践中处理这个问题?

我必须嘲笑谷歌,因为我甚至找不到人们在谈论这个问题,除了这个说"添加一个简单的(基于节点的)服务器,它将阻止请求,直到手表完成运行:这将避免总是令人沮丧重新加载页面只是为了找到手表尚未完全运行的现象." - 但不幸的是,这是todo列表中的条目,而不是该回购中存在的内容.

javascript browserify watchify

9
推荐指数
1
解决办法
127
查看次数