Skip to content

Commit da9dd66

Browse files
anmonteiroswannodette
authored andcommitted
CLJS-2281: module_deps.js cannot compute inputs for ES6 sources
1 parent 9745910 commit da9dd66

File tree

4 files changed

+40
-18
lines changed

4 files changed

+40
-18
lines changed

src/main/cljs/cljs/module_deps.js

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
var path = require('path');
2-
var mdeps = require('module-deps');
2+
var mdeps = require('@cljs-oss/module-deps');
33
var nodeResolve = require('resolve');
44
var browserResolve = require('browser-resolve');
5+
var konan = require('konan');
56

67
var target = 'CLJS_TARGET';
78
var filename = path.resolve(__dirname, 'JS_FILE');
@@ -11,26 +12,33 @@ var md = mdeps({
1112
resolve: function(id, parent, cb) {
1213
// set the basedir properly so we don't try to resolve requires in the Closure
1314
// Compiler processed `node_modules` folder.
14-
parent.basedir = parent.filename === filename ? __dirname: path.dirname(parent.filename);
15+
parent.basedir =
16+
parent.filename === filename ? __dirname : path.dirname(parent.filename);
1517

1618
resolver(id, parent, cb);
1719
},
1820
filter: function(id) {
1921
return !nodeResolve.isCore(id);
20-
}});
22+
},
23+
detect: function(src) {
24+
var deps = konan(src);
25+
26+
return deps.strings;
27+
},
28+
});
2129

2230
var pkgJsons = [];
2331
var deps_files = {};
2432

25-
md.on('package', function (pkg) {
33+
md.on('package', function(pkg) {
2634
// we don't want to include the package.json for users' projects
2735
if (/node_modules/.test(pkg.__dirname)) {
2836
var pkgJson = {
2937
file: path.join(pkg.__dirname, 'package.json'),
3038
};
3139

3240
if (pkg.name != null) {
33-
pkgJson.provides = [ pkg.name ];
41+
pkgJson.provides = [pkg.name];
3442
}
3543

3644
if (pkg.main != null) {
@@ -61,20 +69,29 @@ md.on('end', function() {
6169
var dep = deps_files[key];
6270

6371
// add provides to files that are not `package.json`s
64-
if (!/node_modules[/\\](@[^/\\]+?[/\\])?[^/\\]+?[/\\]package\.json$/.test(dep.file)) {
72+
if (
73+
!/node_modules[/\\](@[^/\\]+?[/\\])?[^/\\]+?[/\\]package\.json$/.test(
74+
dep.file
75+
)
76+
) {
6577
if (dep.file.indexOf('node_modules') !== -1) {
6678
var providedModule = dep.file
67-
.substring(dep.file.lastIndexOf('node_modules'))
68-
.replace('\\', '/')
69-
.replace('node_modules/', '');
79+
.substring(dep.file.lastIndexOf('node_modules'))
80+
.replace('\\', '/')
81+
.replace('node_modules/', '');
7082

7183
dep.provides = dep.provides || [];
72-
dep.provides.push(providedModule, providedModule.replace(/\.js(on)?$/, ''));
84+
dep.provides.push(
85+
providedModule,
86+
providedModule.replace(/\.js(on)?$/, '')
87+
);
7388

74-
var indexReplaced = providedModule.replace(/\/index\.js(on)?$/,'');
89+
var indexReplaced = providedModule.replace(/\/index\.js(on)?$/, '');
7590

76-
if (/\/index\.js(on)?$/.test(providedModule) &&
77-
dep.provides.indexOf(indexReplaced) === -1) {
91+
if (
92+
/\/index\.js(on)?$/.test(providedModule) &&
93+
dep.provides.indexOf(indexReplaced) === -1
94+
) {
7895
dep.provides.push(indexReplaced);
7996
}
8097
}

src/main/clojure/cljs/build/api.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,8 @@
275275
(defn node-inputs
276276
"EXPERIMENTAL: return the foreign libs entries as computed by running
277277
the module-deps package on the supplied JavaScript entry points. Assumes
278-
that the module-deps NPM packages is either locally or globally installed."
278+
that the `@cljs-oss/module-deps` and `konan` NPM packages are either
279+
locally or globally installed."
279280
[entries]
280281
(closure/node-inputs entries))
281282

src/main/clojure/cljs/closure.clj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,7 +2134,8 @@
21342134
(when-not (.exists pkg-json)
21352135
(spit pkg-json "{}"))
21362136
(let [proc (-> (ProcessBuilder.
2137-
(into (cond->> ["npm" "install" "module-deps" "resolve" "browser-resolve"]
2137+
(into (cond->> ["npm" "install" "@cljs-oss/module-deps"
2138+
"resolve" "browser-resolve" "konan"]
21382139
util/windows? (into ["cmd" "/c"]))
21392140
(map (fn [[dep version]] (str (name dep) "@" version)))
21402141
npm-deps))
@@ -2158,7 +2159,8 @@
21582159
(defn node-module-deps
21592160
"EXPERIMENTAL: return the foreign libs entries as computed by running
21602161
the module-deps package on the supplied JavaScript entry point. Assumes
2161-
that the module-deps NPM package is either locally or globally installed."
2162+
that the `@cljs-oss/module-deps` and `konan` NPM packages are either
2163+
locally or globally installed."
21622164
([entry]
21632165
(node-module-deps entry
21642166
(when env/*compiler*
@@ -2197,7 +2199,8 @@
21972199
(defn node-inputs
21982200
"EXPERIMENTAL: return the foreign libs entries as computed by running
21992201
the module-deps package on the supplied JavaScript entry points. Assumes
2200-
that the module-deps NPM packages is either locally or globally installed."
2202+
that the `@cljs-oss/module-deps` and `konan` NPM packages are either
2203+
locally or globally installed."
22012204
([entries]
22022205
(node-inputs entries
22032206
(when env/*compiler*

src/test/clojure/cljs/build_api_tests.clj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@
402402
(test/delete-node-modules)
403403
(.delete (io/file "package-lock.json"))
404404
(spit (io/file "package.json") (json/json-str {:dependencies {:left-pad "1.1.3"}
405-
:devDependencies {:module-deps "*"
405+
:devDependencies {"@cljs-oss/module-deps" "*"
406+
:konan "*"
406407
:resolve "*"
407408
:browser-resolve "*"}}))
408409
(sh/sh "npm" "install")

0 commit comments

Comments
 (0)