小编cnp*_*cnp的帖子

通过NPM跨多个Browserify或Webpack捆绑包共享模块的简单解决方案

拉出我的头发寻找一个简单的解决方案,通过NPM,跨多个Browserify或Webpack捆绑包共享代码.思考,有文件"桥"这样的东西吗?

这不是因为编译时间(我知道watchify),而是希望提取出我所有供应商特定的库,vendor.js以便保持我的app.js文件大小并且不会使浏览器崩溃大量的源图.另外,如果需要查看已编译的js,我发现它更清晰.所以:

// vendor.js

require('react');
require('lodash');
require('other-npm-module');
require('another-npm-module');
Run Code Online (Sandbox Code Playgroud)

非常重要的是,代码从NPM加载而不是Bower,或者保存到某个"供应商"目录中,以便通过相对路径导入并通过垫片识别.除了我的实际应用程序源之外,我想通过NPM保留每个库引用.

app.js我保留所有源代码,并通过externals数组,从编译中排除上面列出的供应商库:

// app.js 

var React = require('react');
var _     = require('lodash');

var Component = React.createClass()

// ...
Run Code Online (Sandbox Code Playgroud)

然后index.html,我需要两个文件

// index.html
<script src='vendor.js'></script>
<script src='app.js'></script>
Run Code Online (Sandbox Code Playgroud)

使用Browserify或Webpack,如何才能app.js"看到"通过npm加载的模块?我知道创建一个带有外部的包,然后node_modules通过别名引用直接文件(比方说),但我希望找到一个更自动且更少"Require.js"的解决方案.

基本上,我想知道是否可以桥接这两个,以便app.js可以查看内部vendor.js以解决依赖关系.这似乎是一个简单,直接的操作,但我似乎无法在这个广泛的网络上找到答案.

谢谢!

javascript node.js npm browserify webpack

16
推荐指数
2
解决办法
1万
查看次数

TypeScript是否为NodeJS模块访问提供了明确的公共API?

从我想要做的节点应用程序中:

var typeScript = require('typescript'); 

typeScript.compile('...')
Run Code Online (Sandbox Code Playgroud)

我正在寻求将编译器实现到构建系统但无法访问公共API(typescript.compile等),这是不可能的.

这是我想要做的更完整的示例,不过下面是针对LiveScript而不是TypeScript,在为Brunch.io构建系统编写的插件中使用的:

LiveScript = require 'LiveScript'
sysPath = require 'path'

module.exports = class LiveScriptCompiler
  brunchPlugin: yes
  type: 'javascript'
  extension: 'ls'

  constructor: (@config) ->
    null

  compile: (data, path, callback) ->
    try
      result = LiveScript.compile data, bare: yes
    catch err
      error = err
    finally
      callback error, result

  include: [
    (sysPath.join __dirname, '..', 'vendor', 'prelude-browser-0.6.0.js')
  ]
Run Code Online (Sandbox Code Playgroud)

好奇,如果有人找到了解决方法吗?

更新

我最终实现了我自己的解决方案,解决了上面和其他地方列出的各种问题.有关更多信息和用法,请参阅https://github.com/damassi/TypeScript-Watcher.

javascript node.js typescript tsc

11
推荐指数
1
解决办法
3620
查看次数

是否可以使用tsc命令将单个TypeScript文件编译为输出路径?

为了尝试将我的.ts源文件与.js输出分开,我试图在TypeScript中实现一个正式的文件监视器,似乎不存在为单个文件指定输出路径的能力.

这个流程,只是要清楚:我开始观察我的整个src目录,进行更改,比方说,src/views/HomeView.ts我希望节点获取文件已被更改,并将编译后的版本移动到public/js/views/HomeView.js.

使用tsc myfile.ts --out myfile.js它遍历所有模块,并在.ts文件所在的相同路径中编译每个模块,而不将最终文件放在正确指定的路径中.但它创建一个空文件,我希望它最终结束.

我在想:

1)是否可以使用该--out参数并编译该文件?我不希望它遍历导入并编译每个文件,而只是在编译时进行语法/错误检查(这只是次要要求,不是必需的); 和

2)编译器中是否存在阻止其正确组合/创建文件的错误?同样,--outpath指令中的最终输出为空,但确实创建了一个文件.

任何帮助,将不胜感激.

*更新*

虽然我不想关闭这个问题,因为我认为它仍然是一个问题,但我继续实施核心TypeScript编译器以实现我需要做的事情,tsc完全绕过.有关更多信息和用法,请参阅https://github.com/damassi/TypeScript-Watcher.

node.js typescript tsc

10
推荐指数
1
解决办法
5799
查看次数

导入位于低于当前路径的路径中的TypeScript模块会引发Scope Error

为了整合一个AMD友好的TypeScript应用程序框架,我遇到了一个障碍:我似乎无法从我当前的路径下拉导入另一个目录中的模块.我可以导入上面的模块,但是下面会抛出一个错误:

TypeScript Error: The name ''../core/View'' does not exist in the current scope

这是我(非常基本的)应用程序的结构:

app/
 - core/
    - View.ts
 - views/
    - HomeView.ts
 - Application.ts
Run Code Online (Sandbox Code Playgroud)

在我的Application.ts文件中,我可以成功导入这样的模块:

import HomeView = module( 'views/HomeView' );

export class Application {
    constructor() {
        console.log( 'initializing Application' );
    }
}
Run Code Online (Sandbox Code Playgroud)

其中,当使用--module AMD标志时,正确输出

define(["require", "exports", 'views/HomeView'], function(require, exports, __HomeView__) {
    var HomeView = __HomeView__;

    var Application = (function () {
        function Application() {
            console.log('initializing Application', HomeView);
        }
        return Application;
    })();
    exports.Application = Application;    
})
Run Code Online (Sandbox Code Playgroud)

现在,问题是当我跳进 …

scope module amd typescript

5
推荐指数
1
解决办法
3540
查看次数

标签 统计

node.js ×3

typescript ×3

javascript ×2

tsc ×2

amd ×1

browserify ×1

module ×1

npm ×1

scope ×1

webpack ×1