Nx plugin to use Stylelint in your Nx workspace.
License: MIT License
Seems like JSON is hardcoded as the file format of stylelintrc
(both the relative file and the root file). Unsure if it is possible to create custom syntax with JSON.
https://github.com/Phillip9587/nx-stylelint/blob/main/packages/nx-stylelint/src/generators/configuration/generator.ts#L86
Hello, I have upgraded to nx@14.
Part of migration process, "root" optionn is removed from every project.json
file. Looks like nx-stylelint still depends on it and it throws error at github CI (ubuntu worker) while installing node packages - yarn is used.
On MacOS, while localy installing, just works (no error). If I manually re-add or revert 'root' options at project.json, then CI builds again as it should.
error:
error .../node_modules/nx-stylelint/node_modules/nx: Command failed.
Exit code: 1
Command: node ./bin/init
Arguments:
Directory: .../node_modules/nx-stylelint/node_modules/nx
Output:
> NX Cannot read properties of undefined (reading 'endsWith')
Problematic 'root' at project.json:
"projectType": "library",
"root": "libs/web-ui", <------ this is removed at v14 (might be even at v13)
"sourceRoot": "libs/web-ui/src",
NX Report
Node : 18.0.0
OS : darwin arm64
yarn : 1.22.18
nx : 14.1.5
@nrwl/angular : 14.1.5
@nrwl/cypress : 14.1.5
@nrwl/detox : Not Found
@nrwl/devkit : 14.1.5
@nrwl/eslint-plugin-nx : 14.1.5
@nrwl/express : Not Found
@nrwl/jest : 14.1.5
@nrwl/js : Not Found
@nrwl/linter : 14.1.5
@nrwl/nest : Not Found
@nrwl/next : Not Found
@nrwl/node : Not Found
@nrwl/nx-cloud : 14.0.3
@nrwl/nx-plugin : Not Found
@nrwl/react : Not Found
@nrwl/react-native : Not Found
@nrwl/schematics : Not Found
@nrwl/storybook : 14.1.5
@nrwl/web : Not Found
@nrwl/workspace : 14.1.5
typescript : 4.6.4
rxjs : 7.5.5
---------------------------------------
Community plugins:
ngx-bootstrap: 8.0.0
nx-stylelint: 13.3.0
nx-stylelint: 13.3.0 should align with 14.1.5
Please have a look at it.
Thanks
if a use a external formatter (in this example stylelint-checkstyle-reporter), the formatter is not used and the output is stylelint json.
The output should be the output of the formatter (which is in this case xml)
target definition in nx.json:
"stylelint": {
"inputs": ["default", "{workspaceRoot}/.stylelintrc.json", "{workspaceRoot}/.stylelintignore"],
"cache": true,
"options": {
"formatter": "stylelint-checkstyle-reporter"
}
}
When i run stylelint via cli, the formatter is working:
npx stylelint "*.scss" --custom-formatter=stylelint-checkstyle-reporter
Versions:
nx: 18.0.2
stylelint: 16.2.1
nx-stylelint: 17.1.2
stylelint-checkstyle-reporter: 1.0.0
Hi,
ignore pattern should be
["!/*.css"] or ["!/.css", "!**/.scss"] if scss support added, because currently ide like webstorm try to stylelint files like html etc
When generating a config for a project, it replaces the entire targets object, instead of appending to it.
This was done on the latest create-nx-workspace
, with the default app named site
.
Before project.json
{
"root": "apps/site",
"sourceRoot": "apps/site",
"projectType": "application",
"targets": {
"build": {
"executor": "@nrwl/next:build",
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"options": {
"root": "apps/site",
"outputPath": "dist/apps/site"
},
"configurations": {
"production": {}
}
},
"serve": {
"executor": "@nrwl/next:server",
"options": {
"buildTarget": "site:build",
"dev": true
},
"configurations": {
"production": {
"buildTarget": "site:build:production",
"dev": false
}
}
},
"export": {
"executor": "@nrwl/next:export",
"options": {
"buildTarget": "site:build:production"
}
},
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["coverage/apps/site"],
"options": {
"jestConfig": "apps/site/jest.config.js",
"passWithNoTests": true
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["apps/site/**/*.{ts,tsx,js,jsx}"]
}
}
},
"tags": []
}
Command ran
nx g nx-stylelint:configuration --project site
After project.json
{
"root": "apps/site",
"sourceRoot": "apps/site",
"projectType": "application",
"targets": {
"stylelint": {
"executor": "nx-stylelint:lint",
"options": {
"config": "apps/site/.stylelintrc.json",
"lintFilePatterns": ["apps/site/**/*.css"]
}
}
},
"tags": []
}
Hi,
When running npx ng generate nx-stylelint:scss --project=dummy-app
in our workspace, this error is reported unfortunatly:
Cannot find module 'nx/src/config/workspaces'
Require stack:
- /home/me/.../node_modules/nx-stylelint/node_modules/@nrwl/devkit/index.js
- /home/me/.../node_modules/nx-stylelint/src/generators/scss/generator.js
- /home/me/.../node_modules/nx/src/shared/workspace.js
- /home/me/.../node_modules/nx/src/cli/init-local.js
- /home/me/..../node_modules/nx/bin/nx.js
Node : 16.14.2
OS : linux x64
npm : 8.5.0
nx : 13.9.5
@nrwl/angular : 13.9.5
@nrwl/cypress : 13.9.5
@nrwl/detox : Not Found
@nrwl/devkit : 13.9.5
@nrwl/eslint-plugin-nx : 13.9.5
@nrwl/express : 13.9.5
@nrwl/jest : 13.9.5
@nrwl/js : 13.9.5
@nrwl/linter : 13.9.5
@nrwl/nest : Not Found
@nrwl/next : Not Found
@nrwl/node : 13.9.5
@nrwl/nx-cloud : 14.0.3
@nrwl/nx-plugin : Not Found
@nrwl/react : Not Found
@nrwl/react-native : Not Found
@nrwl/schematics : Not Found
@nrwl/storybook : 13.9.5
@nrwl/web : 13.9.5
@nrwl/workspace : 13.9.5
typescript : 4.5.5
rxjs : 7.5.7
---------------------------------------
Community plugins:
@fortawesome/angular-fontawesome: 0.10.0
@ngrx/component-store: 13.0.2
@ngrx/effects: 13.0.2
@ngrx/entity: 13.0.2
@ngrx/router-store: 13.0.2
@ngrx/store: 13.0.2
@ngrx/schematics: 13.0.2
@ngrx/store-devtools: 13.0.2
@storybook/angular: 6.5.12
ng-mocks: 14.2.0
nx-stylelint: 14.0.2
npm ls stylelint
├─┬ [email protected]
│ └── [email protected] deduped
├─┬ [email protected]
│ └── [email protected] deduped
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected] deduped
│ └── [email protected] deduped
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected] deduped
│ └── [email protected] deduped
├─┬ [email protected]
│ └── [email protected] deduped
├─┬ [email protected]
│ └── [email protected] deduped
└── [email protected]
I suspect it's a compatibility issue between NX and the plugin.
When i run the stylelint target i also get the following error:
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^
{
stack: "TypeError: Cannot read properties of undefined (reading 'endsWith')\n" +
' at createProjectRootMappings (/home/.../.../node_modules/@nrwl/workspace/src/core/file-map-utils.js:12:38)\n' +
' at createProjectFileMap (/home/.../.../node_modules/@nrwl/workspace/src/core/file-map-utils.js:27:33)\n' +
' at /home/.../.../node_modules/@nrwl/workspace/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js:92:85\n' +
' at Generator.next (<anonymous>)\n' +
' at fulfilled (/home/.../.../node_modules/tslib/tslib.js:114:62)\n' +
' at processTicksAndRejections (node:internal/process/task_queues:96:5)',
message: "Cannot read properties of undefined (reading 'endsWith')\n" +
'\n' +
'Because of the error the Nx daemon process has exited. The next Nx command is going to restart the daemon process.\n' +
'If the error persists, please run "nx reset".'
Darn. I'll try the plugin after upgrading to NX14/NX15 i guess.
Seems also to be because of this attribute to be removed from the project.json:
"root": "apps/dummy-app",
Hello @Phillip9587,
Is there any plan to support stylelint
16
?
It looks like the minimum version for stylelint-config-standard
is 35.0.0
if we use stylelint
16
.
Have a good day.
Q: Trying to use stylelint in Nx Workspace 9.8.0 with these steps:
Results in:
An unhandled exception occurred: Package "nx-stylelint" was found but does not support schematics.
From which NX workspace version is nx-stylelint supported ?
Cheers,
Ringo.
Support Nx Project Crystal / Inferred Tasks
Hi i am getting the following error when trying to run stylelint against a project using nx run <project-name>:stylelint
An unhandled exception occurred: Cannot find module 'C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\nx-stylelint\src\executors\lint\executor#lintBuilder'
Require stack:
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular-devkit\architect\node\node-modules-architect-host.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular-devkit\architect\node\index.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\models\architect-command.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\commands\run-impl.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular-devkit\schematics\tools\export-ref.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular-devkit\schematics\tools\index.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\utilities\json-schema.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\models\command-runner.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\lib\cli\index.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@angular\cli\lib\init.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@nrwl\cli\lib\init-local.js
- C:\Users\Brendan Ingham\Documents\GitHub\Terraform\src\Ist.Terraform.Collidr\web\node_modules\@nrwl\cli\bin\nx.js
- C:\Users\Brendan Ingham\AppData\Roaming\npm\node_modules\nx\node_modules\@nrwl\cli\bin\nx.js
- C:\Users\Brendan Ingham\AppData\Roaming\npm\node_modules\nx\bin\nx.js
See "C:\Users\BRENDA~1\AppData\Local\Temp\ng-qZcNWo\angular-errors.log" for further details.
here is the output of nx report
> NX Report complete - copy this into the issue template
Node : 14.17.0
OS : win32 x64
yarn : 1.22.10
nx : Not Found
@nrwl/angular : 12.5.0
@nrwl/cli : 12.5.0
@nrwl/cypress : 12.5.0
@nrwl/devkit : 12.5.0
@nrwl/eslint-plugin-nx : 12.5.0
@nrwl/express : Not Found
@nrwl/jest : 12.5.0
@nrwl/linter : 12.5.0
@nrwl/nest : Not Found
@nrwl/next : Not Found
@nrwl/node : Not Found
@nrwl/react : Not Found
@nrwl/schematics : Not Found
@nrwl/tao : 12.5.0
@nrwl/web : Not Found
@nrwl/workspace : 12.5.0
@nrwl/storybook : 12.5.0
@nrwl/gatsby : Not Found
typescript : 4.3.4
After running nx g nx-stylelint:configuration --project projectName for the first time, you still need to run another yarn or npm to pull stylelint-config-xxx libraries.
It still works but dependency bump would be nice :)
Dependabot already got you covered I guess :D #457
I encounter the following error when executing nx g nx-styleline:configuration --project [project name here]
nx g nx-stylelint:configuration --project [project name here]
√ Which formatter would you like to use? · string
Cannot find module 'nx/src/utils/workspace-root'
Require stack:
- [project directory]\node_modules\nx-stylelint\node_modules\@nrwl\devkit\src\utils\module-federation\package-json.js
- [project directory]\node_modules\nx-stylelint\node_modules\@nrwl\devkit\src\utils\module-federation\share.js
- [project directory]\node_modules\nx-stylelint\node_modules\@nrwl\devkit\src\utils\module-federation\index.js
- [project directory]\node_modules\nx-stylelint\node_modules\@nrwl\devkit\index.js
- [project directory]\node_modules\nx-stylelint\src\generators\configuration\generator.js
- [project directory]\node_modules\nx\src\config\workspaces.js
- [project directory]\node_modules\nx\src\command-line\generate.js
- [project directory]\node_modules\nx\src\command-line\nx-commands.js
- [project directory]\node_modules\nx\bin\init-local.js
- [project directory]\node_modules\nx\bin\nx.js
- C:\Users\user\AppData\Roaming\npm\node_modules\nx\bin\nx.js
Node : 14.18.1
OS : win32 x64
yarn : 1.22.15
nx : 14.1.1
@nrwl/angular : Not Found
@nrwl/cypress : 14.1.1
@nrwl/detox : Not Found
@nrwl/devkit : 14.1.1
@nrwl/eslint-plugin-nx : 14.1.1
@nrwl/express : Not Found
@nrwl/jest : 14.1.1
@nrwl/js : 14.8.6
@nrwl/linter : 14.1.1
@nrwl/nest : Not Found
@nrwl/next : 14.1.1
@nrwl/node : Not Found
@nrwl/nx-cloud : Not Found
@nrwl/nx-plugin : Not Found
@nrwl/react : 14.1.1
@nrwl/react-native : Not Found
@nrwl/schematics : Not Found
@nrwl/storybook : 14.1.1
@nrwl/web : 14.1.1
@nrwl/workspace : 14.1.1
typescript : 4.6.4
rxjs : 6.6.7
---------------------------------------
Community plugins:
@nrwl/remix: 14.7.0
nx-stylelint: 14.0.2
npm ls stylelint
`-- [email protected]
I'm trying to connect my repo to Nx Cloud, and when I try to add the @nrwl/nx-cloud package, it's not liking the node engines.
Error: Command failed: yarn add -D @nrwl/nx-cloud@latest
error [email protected]: The engine "node" is incompatible with this module. Expected version "^12.13.0 || ^14.15.0 || ^16.13.0 || >= 17.0.0". Got "16.12.0"
error Found incompatible module.
BTW, nice plugin! I'm patiently awaiting Stylelint 14 compatibility. Always on the bleeding edge, I am. Ha!
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Warning
These dependencies are deprecated:
Datasource | Name | Replacement PR? |
---|---|---|
npm | standard-version |
These updates are pending. To force PRs open, click the checkbox below.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
@swc-node/register
, @swc/cli
, @swc/core
, @swc/helpers
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
.github/workflows/ci.yml
actions/checkout v4
actions/setup-node v4
actions/checkout v4
actions/setup-node v4
actions/checkout v4
actions/setup-node v4
softprops/action-gh-release v2
nx-stylelint/package.json
cosmiconfig ^9.0.0
tslib ^2.6.2
stylelint ^16.0.0
stylelint-config-standard >=35.0.0
stylelint-config-standard-scss >=12.0.0
node ^18.13.0 || >=20.0.0
package.json
@commitlint/cli 19.3.0
@commitlint/config-conventional 19.2.2
@swc-node/register 1.9.2
@swc/cli 0.3.12
@swc/core 1.6.1
@swc/helpers 0.5.11
@types/jest 29.5.12
@types/node 18.19.34
@typescript-eslint/eslint-plugin 7.13.0
@typescript-eslint/parser 7.13.0
cosmiconfig 9.0.0
eslint 8.57.0
eslint-config-prettier 9.1.0
husky 9.0.11
is-ci 3.0.1
jest 29.7.0
jest-environment-node 29.7.0
jsonc-eslint-parser 2.4.0
memfs 4.9.3
prettier 2.8.8
pretty-quick 3.3.1
standard-version 9.5.0
stylelint 16.6.1
ts-jest 29.1.5
ts-node 10.9.2
tslib 2.6.3
typescript 5.4.5
verdaccio 5.31.1
node ^18.13.0 || >=20.0.0
.nvmrc
node 20
Running nx run app:stylelint
throws the following error:
'config' is not found in schema
Hi,
first of all - many thanks for your package, it looks promising.
However, I have encountered an issue while creating the configuration for a given project.
When running nx g nx-stylelint:configuration --project demo-app
this is the error that I get:
An unhandled exception occurred: Package "nx-stylelint" was found but does not support schematics.
See "C:\Users\User\AppData\Local\Temp\1\ng-0eRiyV\angular-errors.log" for further details.
Now, I have to tell you that I'm using nx v 9.1. Is [email protected] compatible with that nx's version?
Create plugin Thanks for creating this.
However, it doesn't work with vscode nx extension.
Stylelint supports linting HTML Inline Styles. HTML Files should be added to the lintFilePatterns
or a option for the configuration generator should be introduced.
Now that NX 18 is out, I'd love to see a new version of nx-stylelint with compatability with NX 18 and Stylelint 16.
Hello,
Situation:
NX workspace is updated from 9.8.0 to 12.x. Added eslint and now added nx-stylelint.
Now trying to add styelint to a project with command:
ng generate nx-stylelint:configuration --project=my-app --skipFormat --no-interactive --dry-run
which resuilt in this error: Expected argument jsonString
to be a string
, got object
Any idea's how to solve that?
Cheers,
Ringo.
Hi,
I just installed your plugin on our nx-workspace with > 120 Angular apps and libs. Is there a way to run "nx-stylelint:configuration" for every project in the corresponding angular.json file?
Also I'd be cool to automatically add the configuration to every new project that gets added to the workspace (not sure if that's possible).
Thank you for the great work!
We're using teamcity for CI and would like to use nx-stylelint to get it runing within the nx commands.
Could you please add support for the custom-formatter CLI flag?
nx g nx-stylelint:init
fails when package.json
doesn't contains a dependencies: {}
entry with following error:
TypeError: Cannot read properties of undefined (reading 'stylelint')
at updateDependencies (<project-path>/node_modules/nx-stylelint/src/generators/init/generator.js:30:35)
at initGenerator (<project-path>/node_modules/nx-stylelint/src/generators/init/generator.js:9:25)
at Object.<anonymous> (<project-path>/node_modules/nx/src/command-line/generate.js:249:36)
at Generator.next (<anonymous>)
at fulfilled (<project-path>/node_modules/tslib/tslib.js:164:62)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
nx: v16.0.0
nx-stylelint: v15.0.0
I just installed the package and added the configuration to one of my projects and am seeing an error when trying to execute the linting command
Cannot find module '@angular-devkit/architect'
Require stack:
- ...root/node_modules/@nrwl/devkit/src/utils/convert-nx-executor.js
- ...root/node_modules/@nrwl/devkit/index.js
- ...root/node_modules/nx-stylelint/src/executors/lint/executor.js
- ...root/node_modules/@nrwl/tao/src/shared/workspace.js
- ...root/node_modules/@nrwl/tao/src/commands/run.js
- ...root/node_modules/@nrwl/tao/index.js
- ...root/node_modules/@nrwl/cli/lib/run-cli.js
I'm still way finding here, but does this plugin provide the ability to write custom Stylelint rules as an Nx library? I'm trying to figure out how to do this without publishing a custom rule to npm.
Hi, Stylelint supports linting CSS / SCSS within TS and JS files. Would it be possible to either update the configuration generator to target files other than .css
or create a new generator that adds JS and or TS files to the lintFilePatterns
?
Since the last relase, custom formatter from installed package is no longer resolved.
Here is my target configuration:
"stylelint": {
"executor": "nx-stylelint:lint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["{projectRoot}/**/*.scss"],
"formatter": "stylelint-junit-formatter"
}
}
nx g nx-stylelint:configuration --project uikit
√ Which formatter would you like to use? · json
√ Which stylesheet format do you use for this project? · scss
Expected argument `jsonString` to be a `string`, got `object`
In the latest NX release I get this error in my jest tests where I create a component programatically.
FAIL workspace libs/workspace/src/generators/new-feature/generator.spec.ts
● Test suite failed to run
TypeError: The URL must be of scheme file
4 | import * as nx from "@nx/devkit"
5 | import type { Tree } from "@nx/devkit"
> 6 | import * as stylelint from "nx-stylelint"
| ^
7 |
8 | import { Schema } from "./schema"
9 |
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected]/node_modules/stylelint/lib/utils/FileCache.cjs:17:32)
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected]/node_modules/stylelint/lib/createStylelint.cjs:7:19)
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected]/node_modules/stylelint/lib/index.cjs:7:25)
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected][email protected][email protected][email protected]/nx-stylelint/src/utils/formatter.ts:3:1)
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected][email protected][email protected][email protected]/nx-stylelint/src/executors/lint/executor.ts:6:1)
at Object.<anonymous> (../../node_modules/.pnpm/[email protected][email protected][email protected][email protected][email protected]/nx-stylelint/src/index.ts:1:1)
at Object.<anonymous> (src/generators/new-feature/generator.ts:6:1)
at Object.<anonymous> (src/generators/new-feature/generator.spec.ts:4:1)
Generator code:
import * as angular from "@nx/angular/generators"
import * as nx from "@nx/devkit"
import type { Tree } from "@nx/devkit"
import * as stylelint from "nx-stylelint"
import { Schema } from "./schema"
export default async function (tree: Tree, schema: Schema) {
await angular.libraryGenerator(tree, {
name: "feature-" + schema.name,
importPath: `@entergon/feature/${schema.name}`,
projectNameAndRootFormat: "as-provided",
directory: "libs/feature/" + schema.name,
prefix: "entergon",
tags: "feature",
skipFormat: true,
changeDetection: "OnPush",
strict: true,
style: "scss",
standalone: true,
})
await stylelint.configurationGenerator(tree, {
formatter: "string",
project: `feature-${schema.name}`,
skipFormat: true,
scss: true,
})
for (const project of nx.getProjects(tree)) {
console.log(project)
}
console.log(tree)
await nx.formatFiles(tree)
}
I wold love to use this in my pre-commit hook, currently it supports affected which is good for CI.
Can we add support for uncommitted option
https://github.com/nrwl/nx/blob/b9ef28712d0d23b0e575a4c354d1bf438e3e6f34/packages/workspace/src/command-line/shared.ts#L12
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.