-
Notifications
You must be signed in to change notification settings - Fork 17.3k
Babel 7 - Take 2 #21623
Babel 7 - Take 2 #21623
Conversation
946ce3c
to
28e05d9
Compare
The build passes on our fork: atom-community#67. Not sure why it has failed here. |
We need to do extensive testing to make sure this doesn't break any packages or this should be a major version bump for Atom. |
We should use the atom-package-downloader to check for ones that use babel and compile them against this configuration for babel to check for how many will fail. |
This is not ready yet, but I have done my best to prevent any breakage. There may be rare cases that I am not still aware of. I have tested the core packages and all of those that I have installed. I encourage everyone to do the same. Get the binaries by clicking on the CI of this PR: atom-community#67 and navigating to For future babel changes (not this PR), we should make the directive version-specific. For example, |
I feel like using something like @atom/babel7-transpiler is a better idea so packages can use their own babel config. |
This is used rarely by the current packages, and so that is not an option for those that are already using |
It would be nice to make |
probably because |
In addition to this, we should provide a version based default configuration. For example, having a babel 8 config for those who After we successfully merge this PR, we can do these types of changes. These should be gradual (by giving deprecation warnings). |
but we should at least allow it. Some packages might want something different than the default configuration. That is the beauty of |
Yeah sure. We can make |
I would say default to babel v5 so there are no breaking packages that don't change and add Win win! |
Well, the story is not that easy. The problem is that we "must" upgrade babel if we want to bump Node and Electron. The last Babel 5 released was released in 2016 (developed using Node 6)! Node 6 to Node 12 has many changes. We can't run Babel 5 forever. That's why I made two special plugins that circumvent these issues. Check the changelog: We should accept this fact that breakage is inevitable with Node version changes, and we "must" have a procedure for transferring unmaintained packages to other people, so they can keep up with the changes. See this issue for an example: #21091 With these being said, the current issue of this PR is not the plugins (I have fixed those to a great extent). The remaining issue is that the transformation is not triggered in the MacOS package tests in the CI. |
ab5611d
to
bcba860
Compare
- The old transfor meant transformSync - The logger has been removed
This plugin is exactly made for Atom. It has these plugins to ensure backwards compatibility + supporting all the new syntax "@babel/preset-env", -> uses Electron 6 target "@babel/preset-flow", "@babel/preset-react", "babel-plugin-add-module-exports", "babel-plugin-transform-not-strict", "@babel/plugin-transform-reserved-words" "@babel/plugin-proposal-class-properties", "@babel/plugin-proposal-private-methods", "@babel/plugin-proposal-decorators", "@babel/plugin-proposal-do-expressions", "@babel/plugin-proposal-export-default-from", "@babel/plugin-proposal-export-namespace-from", "@babel/plugin-proposal-function-bind", "@babel/plugin-proposal-function-sent", "@babel/plugin-proposal-json-strings", "@babel/plugin-proposal-logical-assignment-operators", "@babel/plugin-proposal-nullish-coalescing-operator", "@babel/plugin-proposal-numeric-separator", "@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-pipeline-operator", "@babel/plugin-proposal-throw-expressions", "@babel/plugin-syntax-dynamic-import", "@babel/plugin-syntax-import-meta", it also has some plugins to allow compile time calculations (enabled only on certain syntaxes) "babel-plugin-codegen", "babel-plugin-preval", https://github.com/atom-ide-community/babel-preset-atomic
616a56b
to
8e2e1e5
Compare
8e2e1e5
to
6d82ecb
Compare
The new build error for Electron 9 branch is strange. It is not something I have seen before. Generating snapshot script at "D:\a\1\s\out\startup.js" (2064)
Error: ENOENT: no such file or directory, open 'supports-color'
at Object.openSync (fs.js:458:3)
at Object.readFileSync (fs.js:360:35)
at module.exports (D:\a\1\s\script\node_modules\electron-link\lib\generate-snapshot-script.js:25:25)
at module.exports (D:\a\1\s\script\node_modules\electron-link\lib\index.js:10:18) I put a console.log before {
requiredModulePaths: [
'supports-color',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\spell-check\\node_modules\\debug\\src\\common.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\spelling-manager\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\dom.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\render.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\component-helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\scheduler-assignment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\dedent\\dist\\dedent.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\lib\\code-block.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fuzzaldrin\\lib\\fuzzaldrin.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\ctags\\lib\\ctags.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\symbols-view\\node_modules\\async\\lib\\async.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\symbols-view\\lib\\get-tags-file.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\underscore-plus\\lib\\underscore-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\get-icon-services.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\layout.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\get-icon-services.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\dom.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\render.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\component-helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\scheduler-assignment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\default-file-icons.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\underscore-plus\\lib\\underscore-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\add-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\move-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\copy-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\add-projects-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\directory.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\directory-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\root-drag-and-drop.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\ignored-names.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\base64-vlq.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\array-set.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\binary-search.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\array-set.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\base64-vlq.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\source-map-generator.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\color-string\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\color-convert\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\emitter.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\disposable.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\composite-disposable.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\clear-cut\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\keyboard-layout\\lib\\keyboard-layout.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\us-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\slovak-cmd-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\slovak-qwerty-cmd-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss-selector-parser\\dist\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\colorette\\index.cjs',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\terminal-highlight.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\map-generator.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\symbols.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\stringify.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\warn-once.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\result.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\parse.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\root.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\declaration.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\symbols.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\comment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\lazy-result.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\root.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\stringifier.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\container.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\warning.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\nanoid\\non-secure\\index.cjs',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\line-column\\lib\\line-column.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\terminal-highlight.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\css-syntax-error.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\previous-map.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\container.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\parser.js',
... 481 more items
],
relativeFilePath: '../node_modules/spell-check/node_modules/debug/src/common.js',
moduleASTs_relativeFilePath: true,
filePath: 'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\spell-check\\node_modules\\debug\\src\\common.js',
baseDirPath: 'C:\\Users\\aminy\\atom\\out\\app\\static'
}
{
requiredModulePaths: [
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\spell-check\\node_modules\\debug\\src\\common.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\spelling-manager\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\dom.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\render.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\component-helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\scheduler-assignment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\dedent\\dist\\dedent.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\styleguide\\lib\\code-block.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-select-list\\src\\select-list-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fuzzaldrin\\lib\\fuzzaldrin.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\ctags\\lib\\ctags.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\symbols-view\\node_modules\\async\\lib\\async.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\symbols-view\\lib\\get-tags-file.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\underscore-plus\\lib\\underscore-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\get-icon-services.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\layout.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tabs\\lib\\get-icon-services.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\dom.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\render.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\component-helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\scheduler-assignment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\timecop\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\default-file-icons.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\underscore-plus\\lib\\underscore-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\fs-plus\\lib\\fs-plus.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\add-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\move-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\copy-dialog.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\add-projects-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\directory.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\directory-view.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\root-drag-and-drop.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\tree-view\\lib\\ignored-names.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\welcome\\node_modules\\etch\\lib\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\base64-vlq.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\array-set.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\binary-search.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\array-set.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\base64-vlq.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\amdefine\\amdefine.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\source-map-generator.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\source-map\\lib\\source-map\\util.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\color-string\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\color-convert\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\emitter.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\disposable.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\node_modules\\event-kit\\lib\\composite-disposable.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\helpers.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\clear-cut\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\keyboard-layout\\lib\\keyboard-layout.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\us-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\slovak-cmd-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\atom-keymap\\lib\\slovak-qwerty-cmd-keymap.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss-selector-parser\\dist\\index.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\colorette\\index.cjs',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\terminal-highlight.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\map-generator.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\symbols.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\stringify.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\warn-once.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\result.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\parse.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\root.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\declaration.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\symbols.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\comment.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\lazy-result.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\root.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\stringifier.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\node.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\container.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\warning.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\nanoid\\non-secure\\index.cjs',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\line-column\\lib\\line-column.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\terminal-highlight.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\css-syntax-error.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\previous-map.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\container.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\parser.js',
'C:\\Users\\aminy\\atom\\out\\app\\node_modules\\postcss\\lib\\input.js',
... 481 more items
],
relativeFilePath: '../../../supports-color',
moduleASTs_relativeFilePath: true,
filePath: 'supports-color',
baseDirPath: 'C:\\Users\\aminy\\atom\\out\\app\\static'
}
Error: ENOENT: no such file or directory, open 'supports-color'
|
@aminya there are conflicts on this PR. Do you mind resolving them? I would like to review this PR but it's still on draft state. Do you plan on adding more commits? |
Thank you for your PR! We haven't gotten a response to our comment above. I'm going to close this but don't hesitate to reach out if you plan to add more commits, we'll be happy to reopen the issue. |
Things remaining
Any help or idea regarding these is appreciated. I decided to open this PR to get some fresh ideas to solve these issues after months of trying different things:
Spying @babel/core in the compile-cache test does not seem to work. We might need to use
Sinon
or something similar for that. (the test related toCompileCache-> addPathToCache(filePath, atomHome)
)In the CI, the packages (like language-*) are not transformed (macOS package tests). This does not happen offline.
Description of the Change
This upgrades babel to babel 7.
This PR is the result of several months of effort and trying.
I had to fix electron-link so:
I developed two plugins specifically for Atom to support its special situation:
See the full list of plugins that babel-preset-atomic has in this package.json.
import/export
) are strict by default. However, this breaks some of the Atom packages because they do non-strict things in ES modules. So, I developed this plugin to remove 'use strict' when the triggers are used. I have baked a feature in this plugin that allows removing 'use strict' selectively by adding 'not strict' directive. Ultimately, we should add this 'not strict' to any file that uses JS loosely in ES modules. An example of this isspec/update-process-env-spec.js
There are two move plugins included for backward compatibility:
babel-add-module-exports: this plugin circumvents the fact that ES modules export default by "default" keyword. This means we need to call
require().default
to consume them. This plugin works in combination with transform-not-strict to addmodule.exports=
to the packages that export default things that should have been named exports. For the packages' root, I already made another PR that adds support for both cases, but we cannot patch require for the packages' internal requires as we only have access to the root.@babel/plugin-transform-reserved-words that allows the uses of the old banned keywords such as
package
ordebugger
.Benefits
This PR has several benefits:
"use babel"
.Previous attempts
atom-community#67
#20965
Release Notes