Angular集成Semantic UI

徐洛华
2023-12-01

安装gulp

mango@mango:~/Documents/Angular12$ sudo npm install -g gulp

创建项目

mango@mango:~/Documents/Angular12$ ng new semanticui-angular-project

安装semantic-ui

mango@mango:~/Documents/Angular12/semanticui-angular-project$ npm install semantic-ui --save

安装的时候报错,发现是node12和gulp4不兼容

> semantic-ui@2.4.2 install /home/mango/Documents/Angular12/semanticui-angular-project/node_modules/semantic-ui
> gulp install

fs.js:35
} = primordials;
    ^

ReferenceError: primordials is not defined

安装node版本管理模块

mango@mango:~/Documents/Angular12/semanticui-angular-project$ sudo npm install n -g
[sudo] mango 的密码: 
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
+ n@7.2.2
added 1 package from 2 contributors in 2.577s

降级安装nodejs 11.15

mango@mango:~/Documents/Angular12/semanticui-angular-project$ sudo n 11.15.0
  installing : node-v11.15.0
       mkdir : /usr/local/n/versions/node/11.15.0
       fetch : https://nodejs.org/dist/v11.15.0/node-v11.15.0-linux-x64.tar.xz
   installed : v11.15.0 (with npm 6.7.0)

Note: the node command changed location and the old location may be remembered in your current shell.
         old : /usr/bin/node
         new : /usr/local/bin/node
To reset the command location hash either start a new shell, or execute PATH="$PATH"

重新安装semantic-ui

mango@mango:~/Documents/Angular12/semanticui-angular-project$ npm install semantic-ui --save
npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN deprecated natives@1.1.6: This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.

> semantic-ui@2.4.2 install /home/mango/Documents/Angular12/semanticui-angular-project/node_modules/semantic-ui
> gulp install

/home/mango/Documents/Angular12/semanticui-angular-project/node_modules/accord/lib/index.js:29
      throw new Error(name + " version " + version + " is not currently supported");
      ^

Error: less version 4.1.1 is not currently supported

查看package-lock.json可以看到angular默认的less版本是4.1.1

mango@mango:~/Documents/Angular12/semanticui-angular-project$ npm install less@3.13.1

由于angular和semantic-ui对node、gulp、less都有版本要求,并且存在冲突,所以直接使用全新的本地环境,在项目同一个目录新建一个semantic-ui,并安装semantic-ui

mango@mango:~/Documents/Angular12$ mkdir semantic-ui
mango@mango:~/Documents/Angular12$ cd semantic-ui
mango@mango:~/Documents/Angular12/semantic-ui$ npm install semantic-ui --save
> semantic-ui@2.4.2 install /home/mango/node_modules/semantic-ui
> gulp install

[23:03:18] Using gulpfile ~/node_modules/semantic-ui/gulpfile.js
[23:03:18] Starting 'install'...

[23:03:18] Starting 'run setup'...
? Set-up Semantic UI Automatic (Use default locations and all components)
? We detected you are using NPM Nice! Is this your project folder? /home/mango No, let me specify
? Please enter the absolute path to your project root /home/mango/Documents/Angular12/semanticui-angular-project
? Where should we put Semantic UI inside your project? semantic/
[23:05:13] Finished 'run setup' after 1.92 min
[23:05:13] Starting 'create install files'...

进入semantic目录,并进行build

mango@mango:~/Documents/Angular12/semantic-ui$ cd semantic/
mango@mango:~/Documents/Angular12/semantic-ui/semantic$ gulp build

将build的css文件和js文件加入到angular.json文件

          "options": {
            "outputPath": "dist/semanticui-angular-project",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "inlineStyleLanguage": "less",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.less",
              // "../semantic-ui/semantic/dist/semantic.min.css"
            ],
            "scripts": [
              // "../semantic-ui/semantic/dist/semantic.min.js"
            ]
          }
 类似资料: