Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Browserify plugin for compiling TypeScript

NotificationsYou must be signed in to change notification settings

TypeStrong/tsify

Repository files navigation

Browserify plugin for compilingTypeScript

NPM versionDownloadsBuild statusDependency statusdevDependency StatuspeerDependency Status

Example Usage

Browserify API:

varbrowserify=require('browserify');vartsify=require('tsify');browserify().add('main.ts').plugin(tsify,{noImplicitAny:true}).bundle().on('error',function(error){console.error(error.toString());}).pipe(process.stdout);

Command line:

$ browserify main.ts -p [ tsify --noImplicitAny ]> bundle.js

Note that when using the Browserify CLI, compilation will always halt on the first error encountered, unlike the regular TypeScript CLI. This behavior can be overridden in the API, as shown in the API example.

Also note that the square brackets[ ] in the example above arerequired if you want to pass parameters to tsify; they don't denote an optional part of the command.

Installation

Just plain ol'npm installation:

1. Install browserify

npm install browserify

2. Install typescript

npm install typescript

3. Install tsify

npm install tsify

For use on the command line, use the flagnpm install -g.

Options

  • tsify will generate inline sourcemaps if the--debug option is set on Browserify, regardless of the flag status intsconfig.json.
  • tsify supports almost all options from the TypeScript compiler. Notable exceptions:
    • -d, --declaration - Seetsify#15
    • --out, --outDir - Use Browserify's file output options instead. These options are overridden becausetsify writes to an internal memory store before bundling, instead of to the filesystem.
  • tsify supports the TypeScript compiler's-p, --project option which allows you to specify the path that will be used when searching for thetsconfig.json file. You can pass either the path to a directory or to thetsconfig.json file itself. (When using the API, theproject option can specify either a path to a directory or file, or the JSON content of atsconfig.json file.)
  • tsify supports overriding thefiles,exclude andinclude options. In particular, if"files": [] is specified, only the Browserify entry points (and their dependencies) are passed to TypeScript for compilation.
  • tsify supports the following extra options:
    • --global - This will set uptsify as a global transform. See theBrowserify docs for the implications of this flag.
    • --typescript - By default we just dorequire('typescript') to pickup whichever version you installed. However, this option allows you to pass in a different TypeScript compiler, such asNTypeScript. Note that when using the API, you can pass either the name of the alternative compiler or a reference to it:
      • { typescript: 'ntypescript' }
      • { typescript: require('ntypescript') }

Does this work with...

tsconfig.json?

tsify will automatically read options fromtsconfig.json. However, some options from this file will be ignored:

  • compilerOptions.declaration - Seetsify#15
  • compilerOptions.out,compilerOptions.outDir, andcompilerOptions.noEmit - Use Browserify's file output options instead. These options are overridden becausetsify writes its intermediate JavaScript output to an internal memory store instead of to the filesystem.
  • files - Use Browserify's file input options instead. This is necessary because Browserify needs to know which file(s) are the entry points to your program.
  • compilerOptions.sourceMaps - Source maps are only generated if the--debug option is set on Browserify.
  • compilerOptions.inlineSourceMaps - Generated source maps are always inline.

Watchify?

Yes!tsify can do incremental compilation usingwatchify, resulting in much faster incremental build times. Just follow the Watchify documentation, and addtsify as a plugin as indicated in the documentation above.

Gulp?

No problem. See the Gulp recipes on usingbrowserify andwatchify, and addtsify as a plugin as indicated in the documentation above.

Grunt?

Usegrunt-browserify and you should be good! Just addtsify as a plugin in your Grunt configuration.

IE 11?

The inlined sourcemaps that Browserify generatesmay not be readable by IE 11 for debugging purposes. This is easy to fix by addingexorcist to your build workflow after Browserify.

ES2015?(formerly known as ES6)

TypeScript's ES2015 output mode should work without too much additional setup. Browserify does not support ES2015 modules, so if you want to use ES2015 you still need some transpilation step. Make sure to addbabelify to your list of transforms. Note that if you are using the API, you need to set uptsify before babelify:

browserify().plugin(tsify,{target:'es6'}).transform(babelify,{extensions:['.tsx','.ts']})

FAQ / Common issues

SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'

This error occurs when a TypeScript file is not compiled to JavaScript before being run through the Browserify bundler. There are a couple known reasons you might run into this.

  • If you are trying to output in ES6 mode, then you have to use an additional transpilation step such asbabelify because Browserify does not support bundling ES6 modules.
  • Make sure that if you're using the API, your setup.plugin('tsify') is donebefore any transforms such as.transform('babelify').tsify needs to run first!
  • There is a known issue in Browserify regarding including files withexpose set to the name of the included file. More details and a workaround are available in#60.

Why a plugin?

There are several TypeScript compilation transforms available on npm, all with various issues. The TypeScript compiler automatically performs dependency resolution on module imports, much like Browserify itself. Browserify transforms are not flexible enough to deal with multiple file outputs given a single file input, which means that any working TypeScript compilation transform either skips the resolution step (which is necessary for complete type checking) or performs multiple compilations of source files further down the dependency graph.

tsify avoids this problem by using the power of plugins to perform a single compilation of the TypeScript source up-front, using Browserify to glue together the resulting files.

License

MIT

Changelog

  • 5.0.4 - Fix export ind.ts file.
  • 5.0.3 - Improve detection of case-sensitive file systems.
  • 5.0.2 - Remove@types/browserify and incorrect/undocumented use of TypeScript types intsify signature.
  • 5.0.1 - Remove default import fromindex.d.ts and add@types/browserify dependency.
  • 5.0.0 -Breaking: Fix type declarations for TypeScript 4 compatibility. With this fix, the TypeScript version must be 2.8 or above.
  • 4.0.2 - Addtypes topackage.json.
  • 4.0.1 - Fix so thatwatchify does not stop listening.
  • 4.0.0 - Re-applied changes from 3.0.2: added support for theforceConsistentCasingInFilenames compiler option.
  • 3.0.4 - Added support for overriding thefiles,exclude andinclude options.
  • 3.0.3 - Reverted 3.0.2.
  • 3.0.2 - Added support for theforceConsistentCasingInFilenames compiler option.
  • 3.0.1 - Fixed an error with file system case sensitivity detection.
  • 3.0.0 -Breaking: Dropped support for Browserify < 10.x. Re-instated changes from 2.0.4 to 2.0.7.
  • 2.0.8 - Reverted to 2.0.3. Changes introduced from 2.0.4 to 2.0.7 have issues with early versions of Browserify.
  • 2.0.7 - Tracked files for filtered stream and module-name 'rows'. UsingallowJs no longer causes problems with streams.
  • 2.0.6 - Filtered module-name 'rows', too, as filtering only source 'rows' re-broke Browserify'srequire option.
  • 2.0.5 - The fix in 2.0.4 was too aggressive, as it filtered too many Browserify 'rows'. Now, only 'rows' from stream sources are filtered.
  • 2.0.4 - Fixed a bug that broke Browserify'srequire option.
  • 2.0.3 - Fixed a bug related to case-sensitive paths and normalized more path parameters.
  • 2.0.2 - Added support for specifying theproject option using the JSON content of atsconfig.json file.
  • 2.0.1 - Fixed a bug in which theinclude option was broken iftsconfig.json was not in the current directory.
  • 2.0.0 -Breaking: updated to the latesttsconfig, sofilesGlob is no longer supported. Use TypeScript 2'sexclude andinclude options instead.
  • 1.0.9 - Implemented additional compiler host methods to support the default inclusion of visible@types modules.
  • 1.0.8 - Implemented file system case-sensitivity detection, fixing#200.
  • 1.0.7 - ReplacedObject.assign withobject-assign for Node 0.12 compatibility.
  • 1.0.6 - Fixed a bug in which TypeScript 2 libraries (specified using thelib option) were left out of the compilation when bundling on Windows.
  • 1.0.5 - Fixed a bug where empty output resulted in an error.
  • 1.0.4 - Fixed numerous bugs:
    • Refactored to use canonical file names, fixing#122,#135,#148,#150 and#161.
    • Refactored to avoid having to infer the TypeScript root, fixing#152.
    • Misconfiguration oftsify as a transform now results in an explicit error.
    • Internal errors that previously went unreported are now emitted to Browserify.
  • 1.0.3 - Fixed a bug introduced in 1.0.2 (that resulted in thetarget being set toES3).
  • 1.0.2 - Added support for the TypeScript compiler's short-name, command-line options (e.g.-p).
  • 1.0.1 - On Windows, sometimes, the Browserifybasedir contains backslashes that need normalization for findConfigFile to work correctly.
  • 1.0.0 -Breaking: TypeScript is now adevDependency so we don't install one for you. Please runnpm install typescript --save-dev in your project to use whatever version you want.
  • 0.16.0 - Reinstated changes from 0.15.5.
  • 0.15.6 - Reverted 0.15.5 because of breaking changes.
  • 0.15.5 - UsedTypeStrong/tsconfig for parsingtsconfig.json to add support forexclude and more.
  • 0.15.4 - Fixed some compilation failures introduced by v0.14.3.
  • 0.15.3 - Added support for the--global flag to usetsify as a global transform.
  • 0.15.2 - Added support for thefiles property oftsconfig.json.
  • 0.15.1 - Added support for--project flag to use a custom location fortsconfig.json.
  • 0.15.0 - Removeddebuglog dependency.
  • 0.14.8 - Reverted removal ofdebuglog dependency for compatibility with old versions of Node 0.12.
  • 0.14.7 - Only generate sourcemap information in the compiler when--debug is set, for potential speed improvements when not using sourcemaps.
  • 0.14.6 - Fixed output when--jsx=preserve is set.
  • 0.14.5 - Removedlodash anddebuglog dependencies.
  • 0.14.4 - Fixed sourcemap paths when using Browserify'sbasedir option.
  • 0.14.3 - FixedallowJs option to enable transpiling ES6+ JS to ES5 or lower.
  • 0.14.2 - FixedfindConfigFile for TypeScript 1.9 dev.
  • 0.14.1 - Removed module mode override for ES6 mode (because CommonJS mode is now supported by TS 1.8).
  • 0.14.0 - Updated to TypeScript 1.8 (thanks @joelday!)
  • 0.13.2 - FixedfindConfigFile for use with the TypeScript 1.8 dev version.
  • 0.13.1 - Fixed bug where*.tsx was not included in Browserify's list of extensions if thejsx option was set viatsconfig.json.
  • 0.13.0 - Updated to TypeScript 1.7.
  • 0.12.2 - Fixed resolution of entries outside ofprocess.cwd() (thanks @pnlybubbles!)
  • 0.12.1 - Updatedtypescript dependency to lock it down to version 1.6.x
  • 0.12.0 - Updated to TypeScript 1.6.
  • 0.11.16 - Updatedtypescript dependency to lock it down to version 1.5.x
  • 0.11.15 - Added*.tsx to Browserify's list of extensions if--jsx is set (with priority *.ts > *.tsx > *.js).
  • 0.11.14 - Override sourcemap settings with--inlineSourceMap and--inlineSources (because that's what Browserify expects).
  • 0.11.13 - Fixed bug introduced in last change where non-entry point files were erroneously being excluded from the build.
  • 0.11.12 - Fixed compilation when the current working directory is a symlink.
  • 0.11.11 - Updated compiler host to support current TypeScript nightly.
  • 0.11.10 - Updated resolution oflib.d.ts to support TypeScript 1.6 and to work with the--typescript option.
  • 0.11.9 - Fixed dumb error.
  • 0.11.8 - Handled JSX output from the TypeScript compiler to supportpreserve.
  • 0.11.7 - Added*.tsx to the regex determining whether to run a file through the TypeScript compiler.
  • 0.11.6 - Updated dependencies and devDependencies to latest.
  • 0.11.5 - Fixed emit offile event to trigger watchify even when there are fatal compilation errors.
  • 0.11.4 - Added--typescript option.
  • 0.11.3 - Updated to TypeScript 1.5.
  • 0.11.2 - Blacklisted--out and--outDir compiler options.
  • 0.11.1 - Addedtsconfig.json support.
  • 0.11.0 - Altered behavior to pass through all compiler options to tsc by default.
  • 0.10.2 - Fixed output of global error messages. Fixed code generation in ES6 mode.
  • 0.10.1 - Fixed display of nested error messages, e.g. many typing errors.
  • 0.10.0 - AddedstopOnError option and changed default behavior to continue building when there are typing errors.
  • 0.9.0 - Updated to use TypeScript from npm (thanks @hexaglow!)
  • 0.8.2 - Updated peerDependency for Browserify to allow any version >= 6.x.
  • 0.8.1 - Updated peerDependency for Browserify 9.x.
  • 0.8.0 - Updated to TypeScript 1.4.1.
  • 0.7.1 - Updated peerDependency for Browserify 8.x.
  • 0.7.0 - Updated error handling for compatibility with Watchify.
  • 0.6.5 - Updated peerDependency for Browserify 7.x.
  • 0.6.4 - Included richer file position information in syntax error messages.
  • 0.6.3 - Updated to TypeScript 1.3.
  • 0.6.2 - Included empty *.d.ts compiled files in bundle for Karma compatibility.
  • 0.6.1 - Fixed compilation cache miss when given absolute filenames.
  • 0.6.0 - Updated to TypeScript 1.1.
  • 0.5.2 - Bugfix for 0.5.1 for files not included with expose.
  • 0.5.1 - Handled *.d.ts files passed as entries. Fix for files included with expose.
  • 0.5.0 - Updated to Browserify 6.x.
  • 0.4.1 - Added npmignore to clean up published package.
  • 0.4.0 - Dropped Browserify 4.x support. Fixed race condition causing pathological performance with some usage patterns, e.g. when used withkarma-browserify.
  • 0.3.1 - Supported adding files withbundler.add().
  • 0.3.0 - Added Browserify 5.x support.
  • 0.2.1 - Fixed paths for sources in sourcemaps.
  • 0.2.0 - Made Browserify prioritize *.ts files over *.js files in dependency resolution.
  • 0.1.4 - Handled case where the entry point is not a TypeScript file.
  • 0.1.3 - Automatically added *.ts to Browserify's list of file extensions to resolve.
  • 0.1.2 - Added sourcemap support.
  • 0.1.1 - Fixed issue where intermediate *.js files were being written to disk when usingwatchify.
  • 0.1.0 - Initial version.

[8]ページ先頭

©2009-2025 Movatter.jp