Commit Graph

37 Commits

Author SHA1 Message Date
zodern
b0d2b8090c Make api.versionsFrom sync 2023-11-17 14:43:07 -06:00
denihs
93538f6fe4 - removing unnecessary console.log 2023-11-16 16:33:22 -04:00
Gabriel Grubba
7ed4481e82 ci: logs logs logs 2023-09-19 19:12:39 -03:00
Matheus Castro
b1a6cc0761 Remove Fibers for meteor tools: turns out the package building is still not done. Still need to check why it's failing to require node_modules when evaluating/loading the plugin. 2022-12-04 00:27:50 -03:00
harryadel
55922449ca Add note about legacy bundle 2021-07-14 15:11:33 +02:00
Jan Dvorak
21c5f6a092 Update history & finish removal of deprecated package API
And correct versions for release
2021-05-20 21:40:00 +02:00
Jan Dvorak
b5b7306bed Remove deprecated code from before v1.0
Remove deprecated code from before Meteor 1.0 that  was documented via XXX COMPAT in comments. Move deprecated packages into the deprecated folder (deps, livedata, srp).
2021-04-23 17:56:05 +02:00
Ben Newman
37b1683fbc Centralize legacy arch logic in tools/utils/archinfo.ts. 2019-11-08 11:15:23 -05:00
Paulo Mogollón
2ae2690f3a Convert tools/utils/archinfo.js to TypeScript. (#10624)
* Updated code to use modern JS
* Added types
* Stopped using 2 underscore functions (1 remaining)
2019-07-21 12:01:24 -04:00
Ben Newman
5ed64fb1db Remove explicit .js extension from tools/fs/files imports. 2019-07-04 10:32:09 -04:00
Ben Newman
dd00c6b0c1 Warn about duplicate api.mainModule paths, like api.addFiles does.
This would have helped catch the underlying problem in #10234.
2018-10-03 15:13:08 -04:00
Ben Newman
c28d813745 Merge branch 'devel' into release-1.6.2 2018-02-23 18:39:06 -05:00
Ben Newman
ae3ad3b2df Support a meteor.mainModule section in application package.json files.
https://github.com/meteor/meteor-feature-requests/issues/135

This change allows applications to specify specific entry points for each
architecture, without relying on `imports` directories to determine the
eagerness/laziness of modules. In other words, it will finally be possible
to build a Meteor app without a special `imports` directory.

Specifically, if `packageJson.meteor.mainModule[architecture]` is defined,
all modules for that architecture will be lazy except for the specified
module, which will be loaded eagerly.

Possible values for `architecture` include "client", "server", "web",
"web.browser", "web.cordova", "os", and so on, just like the second
argument to `api.mainModule(file, where)` in Meteor packages.

In order to match existing behavior, a Meteor application might include
the following in its `package.json` file:

  "meteor": {
    "mainModule": {
      "client": "client/main.js",
      "server": "server/main.js"
    }
  }

These architectures are handled independently, so omitting the "client" or
"server" property would cause that architecture to revert to standard
Meteor loading semantics. In other words, Meteor developers must opt into
this functionality, which is crucial for backwards compatibility.

Note that this functionality applies only to application modules, since
modules in Meteor packages are already lazy by default, and Meteor
packages can already specify entry points by calling `api.mainModule` in
their `package.js` files.

Also note that the loading behavior of non-JavaScript resources is *not*
affected by `packageJson.meteor.mainModule`. Only resources added by
compiler plugins via `addJavaScript` are subject to the new configuration
option. If a compiler plugin calls `addStylesheet` or `addHtml`, those
resources will still be included unconditionally in the HTML document
rendered by the web server. While you could try to import these resources
from JavaScript, you would only be importing any JavaScript resources the
compiler plugin registered using `addJavaScript`, and not the actual HTML
or CSS resources. I welcome feedback on this decision, but if there's no
meaningful way to import a resource, making it lazy just means it won't be
loaded at all.

An ulterior motive for this feature is to enable Meteor apps to have
directory layouts that developers who are not familiar with Meteor can
immediately understand. The special meaning of the `imports` directory and
the surprising eagerness of modules outside of `imports` have always
required some explanation, so this change should reduce that surprise.

Because Meteor strives to be a zero-configuration tool, this is currently
the only supported option in the "meteor" section of `package.json`,
though the available options may be expanded in the future if that's the
best/only way to solve important problems. This would involve adding
additional methods to the `MeteorConfig` class in `project-context.js`,
and then using those methods elsewhere in the `meteor/tools` codebase.
2018-02-23 12:44:56 -05:00
Ben Newman
7fc1b1b73c Introduce "legacy" shorthand for web.browser.legacy and web.cordova. 2018-01-22 18:07:55 -05:00
Ben Newman
4a4b4f93a9 Fix long-standing bug due to improper use of _.has on an array.
This traces back to my commit a9fde48ca8.
The problem went unnoticed because the only symptom was that duplicate
files were not properly reported.

The "compiler plugins - addAsset" self-test checks for the "Duplicate
source file" error, and was passing until recently, but began failing
after I fixed a bug in the forAllMatchingArchs function that allowed
duplicate callbacks for the same architecture.
2018-01-22 17:56:54 -05:00
Ben Newman
7fceffbe00 Avoid duplicating calls in forAllMatchingArchs. 2018-01-22 17:54:42 -05:00
Ben Newman
a94db9b6ae Convert PackageAPI to an ECMAScript class. 2018-01-22 17:54:42 -05:00
Ben Newman
f6ce506fbd Revoke eagerness of overridden api.mainModule files. 2018-01-22 17:54:41 -05:00
Eric Dobbertin
005c521f54 Fix comment about unordered imports (#8362) 2017-02-14 09:03:25 -08:00
Ben Newman
911f25bbf4 Allow lazy api.mainModule modules.
If you call api.mainModule(path, where, { lazy: true }), that main
module will not be evaluated until other code imports it at runtime, and
won't even be bundled if no other code imports it.

Closes #6132.
2016-11-14 12:51:00 -05:00
Tom Coleman
04f401c711 JSdoc refactoring to make API boxes work again. 2016-10-27 14:55:56 -07:00
Ben Newman
14ee8775c3 Decompose PackageNamespace, PackageNpm, and PackageCordova classes.
Similar to the treatment given to PackageAPI in my commit
af50b4cc5b.

This clear separation of concerns will be helpful for optimizing
PackageSource#initFromPackageDir.
2016-10-06 17:39:23 -04:00
Ben Newman
7d5b3c05a1 Normalize relative paths passed to api.addFiles.
Fixes #6527.
2016-03-18 19:11:28 -04:00
Avital Oliver
6682972c3a Implement "testOnly" packages
These packages are only bundled with the app when running
`meteor test-app`.
2016-02-01 22:18:00 -08:00
Ben Newman
699f4e8c83 Implement api.mainModule for defining package entry points.
The main module serves the crucial purpose of combining all the exports of
other modules in the package, which eliminates the need for api.export in
principle, though the module.exports of the main module (also defined as
Package[packageName]) will still be populated with any api.export-ed
properties.
2015-12-09 14:37:22 -05:00
Ben Newman
ed17924940 Add braces to every if/for(-in)/while statement in tools directory. 2015-11-13 12:25:19 -05:00
Ben Newman
a9fde48ca8 Treat api.files[arch].{sources,assets} as arrays, not objects.
We only got away with this because we later use _.values to iterate over
the elements of the array, which just happens to do the right thing when
the array is overloaded with object properties. The order of iteration was
even the same because object keys are enumerated in order of assignment,
but when you're working with an ordered list of files it's better to use
an array the normal way (for its elements rather than its properties).
2015-10-29 23:57:31 -04:00
Sashko Stubailo
dd2f166fe9 Don't throw an error when using deprecated package asset API
Fixes #5458
2015-10-21 14:34:20 -07:00
Sashko Stubailo
0bb7c7c0b2 New addAssets package.js API; same file can be source and asset
1. Add `addAssets` API to `package.js`
2. Rename `getSourcesFunc` to `getFiles` in internal code
3. Changed `PackageAPI#sources` to `PackageAPI#files` with a new structure that
   has separate objects for assets and sources
4. Added some tests for different error conditions
5. The same file can now be a source and an asset
2015-09-02 13:14:02 -07:00
Dean Brettle
bab1459c50 Doc export from debugOnly and prodOnly packages
Address lack of documentation mentioned in issue #3639.
2015-09-01 13:59:20 -07:00
Sashko Stubailo
a96e0e1009 Correctly format doc comment about options 2015-08-28 10:52:49 -07:00
Slava Kim
afee6b07c7 move catalog/ into packaging/ 2015-08-06 16:39:01 -07:00
Slava Kim
39d8aef3d9 move files into console/ tool-testing/ 2015-08-06 16:39:00 -07:00
Slava Kim
6b1bb038d8 Move files into tools/fs 2015-08-03 22:09:28 -07:00
Slava Kim
8a8db83d29 Move files into tools/utils 2015-08-03 20:32:38 -07:00
Slava Kim
3ddd281d8c Move catalog files into tools/catalog/ 2015-07-30 12:12:07 -07:00
David Glasser
2ccaf6a51e Move some files into isobuild subdirectory
The exact borderline between "Isobuild" and "the tool" is a little hazy,
but the idea is that "Isobuild" is the part that you could imagine being
embedded in a non-command-line build tool. It's not about commands or
UI, but just about building packages and apps.

A next step could be moving things that are strictly "the command-line
tool" into their own subdir, and leaving the top directory mostly just
for shared utilities like buildmessage.  (Which could even go in a utils
subdir?)
2015-07-16 15:12:36 -07:00